آموزش: توابع کاربردی آرایه ها
سلام..همونطور که از اسم تاپیک مشخصه توابعی که بیشتر کاربرد دارنو اینجا معرفی میکنم.
تابع array_keys
این تابع 3 تا آرگومان داره:
- اولین پارامتری که میگیره , یک آرایه اس.
- دومین پارامتری که میگیره , search value هست یعنی کلمه ای که میخواین دنبالش بگردین.(اختیاری)
- و سومین نوع operator مقایسه ای هست واسه شرط تساوی با search value. (اختیاری , مقدار پیش فرض = false)
توضیحات:
این تابع ایندکس های یک آرایه رو بر میگردونه.
$array = array(0 => 100, "color" => "red"); print_r(array_keys($array));
خروجی:
Array
(
[0] => 0
[1] => color
)
* سایت php وقتی آرگومانیرو داخل کروشه ( ] ) گذاشت یعنی وجودش اختیاریه.توو مثال قبلی فقط یک پارامتر داده و پارامتر دوم چیزی واسه سرچ ندادیم , بنابر این سرچی انجام نمیشه و تمام ایندکس هارو بر میگردونه.
مثال با پارامتر دوم:
$array = array("blue", "red", "green", "blue", "blue");
print_r(array_keys($array, "blue"));
خروجی:
Array
(
[0] => 0
[1] => 3
[2] => 4
)
اینجا چون پارامتر دوم داده پس تمام ایندکس هارو بر نمیگردونه و دنبال اون چیزی که سرچ شده میگرده که ایجا دنبال blue بوده و خانه ی صفرم و سوم و چهارم این عبارتو داره که برگردونده.
پارامتر سوم اگر true بدید زمان سرچ از operator سه تا مساوی (===) برای مقایسه استفاده میکنه.تفاوت سه تا مساوی با دو تا مساوی در شرط اینه که سه تا مساوی علاوه بر برابر بودن مقادیر باید type اشونم یکی باشه یعنی هر دو عدد باشن یا هر دو رشته باشن بعبارت دیگه سه تا مساوی برابر این شرطه:
if ($a==$b && gettype($a) == gettype($b))
* gettype نوع متغیر بر میگردونه.
تابع array_merge
این تابع آرایه هارو ادغام میکنه.هر تعدادی که پارامتر بدید.
$array1 = array("color" => "red", 2, 4);
$array2 = array("a", "b", "color" => "green", "shape" => "trapezoid", 4);
$result = array_merge($array1, $array2);
print_r($result);
خروجی:
Array
(
[color] => green
[0] => 2
[1] => 4
[2] => a
[3] => b
[shape] => trapezoid
[4] => 4
)
* green جایگزین red شده , چون ایندکس هاشون یکسانه.
تابع array_reverse
خوب اینم مشخصه دیگه.آرایه رو معکوس میکنه.
$input = array("php", 4.0, array("green", "red"));
$reversed = array_reverse($input);
print_r($input);
print_r($reversed);
خروجی:
// input
Array
(
[0] => php
[1] => 4
[2] => Array
(
[0] => green
[1] => red
)
)
###################################
// reversed
Array
(
[0] => Array
(
[0] => green
[1] => red
)
[1] => 4
[2] => php
)
* این تابع پارامتر دومش اختیاریه و پیش فرض false. اگر مقدار true بگیره ایندکس های عددی ایندکسشون عوض نمیشه و فقط جاش تغییر میکنه و ایندکس های غیر عددی خودشونن.
مقدار ایندکس هارو ببینید.
ادامه ی مثال بالا:
$preserved = array_reverse($input, true); print_r($preserved);
خروجی:
Array
(
[2] => Array
(
[0] => green
[1] => red
)
[1] => 4
[0] => php
)
تابع array_values
یک آرگومان داره و مقادیر یک آرایه رو برمیگردونه.
$array = array("size" => "XL", "color" => "gold");
print_r(array_values($array));
خروجی:
Array
(
[0] => XL
[1] => gold
)
حروف ایندکس آرایه رو به حروف کوچک یا بزرگ تبدیل میکنه.
دو تا آرگومان داره:
- آرایه میگیره
- حالتو میگیره : CASE_UPPER یا CASE_LOWER , اختیاریه و پیش فرض = CASE_LOWER
$input_array = array("FirSt" => 1, "SecOnd" => 4);
print_r(array_change_key_case($input_array, CASE_UPPER));
خروجی:
Array
(
[FIRST] => 1
[SECOND] => 4
)
تابع renge
یک آرایه شامل طیفی از عناصر میسازه.
سه تا آرگومان داره:
- مقداری برای گام شروع
- مقداری برای گام پایان
- گام پیمایش مراحل , عددی مثبت میگیره و (اختیاریه) و پیش فرض = 1
$a = range(0, 12); // array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)
$b = range(0, 100, 10); // array(0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100)
$c = range('a', 'i'); // array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i')
$d = range('c', 'a'); // array('c', 'b', 'a')
تابع list
لیستی از متغیر ها میگیره و این متغیر هارو بترتیب مقدار دهی میکنه.
$info = array('coffee', 'brown', 'caffeine'); // an array
list($drink, $color, $power) = $info;
echo $drink; // coffee
echo $color; // brown
echo $power; // caffeine
تابع count
تعداد عناصرو شمارش میکنه.
2 تا آرگومان:
- یک آرایه یا یک آبجکت قابل شمارش میگیره
- mode میگیره که با COUNT_RECURSIVE یا 1 مقدار دهی میشه و (اختیاریه)
بصورت بازگشتی شمارش میکنه و تمام عناصر آرایه های چند بعدی رو شمارش میکنه.
$a[0] = 1; $a[1] = 3; $a[2] = 5; $result = count($a); // $result == 3 $b[0] = 7; $b[5] = 9; $b[10] = 11; $result = count($b); // $result == 3 $result = count(null); // $result == 0 $result = count(false); // $result == 1
مثال بهمراه recursive count:
$food = array('fruits' => array('orange', 'banana', 'apple'),
'veggie' => array('carrot', 'collard', 'pea'));
// recursive count
echo count($food, COUNT_RECURSIVE); // output 8
// normal count
echo count($food); // output 2
تابع is_array
یک متغیر میگیره و چک میکنه که متغیری که دادیم , یک آرایه هست یا نه.
$yes = array('this', 'is', 'an array');
echo is_array($yes) ? 'Array' : 'not an Array';
// output => Array
#####################################
$no = 'this is a string';
echo is_array($no) ? 'Array' : 'not an Array';
// output => not an Array
* جمله های شرطی سه گانه : اولین قسمت جمله ی شرطی هست و بعد از علامت سؤال اگر شرط برقرار باشد اجرا میشه و در غیر اینصورت بعد از : اجرا میشه.
تابع array_count_values
این تابع یک آرایه میگیره و یک آرایه برمیگردونه که مشخص میکنه هر value چند بار تکرار شده.
آرایه ای که برمیگردونه , ایندکس هاش value آرایه ی اوله و مقادیرش تعداد تکرار هر value:
$array = array(1, "hello", 1, "world", "hello"); print_r(array_count_values($array));
خروجی:
Array
(
[1] => 2
[hello] => 2
[world] => 1
)
تابع array_flip
یک آرایه میگیره و آرایه ای بر میگردونه که جای index و value عوض شده.
یعنی در آرایه جدید , ایندکس آرایه ی ورودی میشه مقدار آرایه جدید و مقدار آرایه ورودی میشه ایندکس آرایه جدید.
$input = array("oranges", "apples", "pears");
$flipped = array_flip($input);
print_r($flipped);
خروجی:
Array
(
[oranges] => 0
[apples] => 1
[pears] => 2
)
############################
$input = array("a" => 1, "b" => 1, "c" => 2);
$flipped = array_flip($input);
print_r($flipped);
خروجی:
Array
(
[1] => b
[2] => c
)
تابع array_sum
آرایه ای از مقادیر میگیره و جمع مقادیرو بصورت عددی یا اعشاری بر میگردونه.
$a = array(2, 4, 6, 8); echo "sum(a) = " . array_sum($a) . "\n";
// sum(a) = 20
##########################
$b = array("a" => 1.2, "b" => 2.3, "c" => 3.4); echo "sum(b) = " . array_sum($b) . "\n";
// sum(b) = 6.9
تابع shuffle
یک آرایه میگیره (بصورت ارجاعی) و مقادیر اون آرایه بصورت رندم مخلوط میشن و جاهاشون عوض میشه.
$numbers = range(1, 10); // array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) shuffle($numbers); print_r($numbers);
##########################
// numbers
Array ( [0] => 7 [1] => 6 [2] => 5 [3] => 1 [4] => 9 [5] => 4 [6] => 2 [7] => 3 [8] => 10 [9] => 8 )
* چون shuffle بصورت ارجاعی آرایه رو میگیره , تغییرات روی خودش صورت میگیره.
تابع array_push
رفتارش مثل یک پشته (stack) است و مقادیری که میخوایم اضافه کنیم به آخر آرایه اضافه میشن.
کاری که array_push انجام میده , مثل مثال زیره:
$array[] = $var;
تابع array_push پارامتر اولی که میگیره , یک آرایه بصورت ارجاعی است و پارامترهای بعدی بسته به تعداد عناصری که میخوایم به انتهای یک آرایه اضافه کنیم میان.
$stack = array("orange", "banana");
array_push($stack, "apple", "raspberry");
print_r($stack);
##########################
Array
(
[0] => orange
[1] => banana
[2] => apple
[3] => raspberry
)
تابع array_ushift
بر خلاف تابع (array_push) , که در مثال قبل معرفی کردیم , تابع array_ushift مانند یک صف عمل میکند و مقادیری که به تابع میدیم به ابتدای آرایه ی مد نظر , اضافه میکنه.
مثل مثال قبل , این تابع هم یک آرایه بصورت ارجاعی میگیره و عناصر بعدی که به عنوان پارامتر میان , به ابتدای آرایه اضافه میشن.
$queue = array("orange", "banana");
array_unshift($queue, "apple", "raspberry");
print_r($queue);
##########################
Array
(
[0] => apple
[1] => raspberry
[2] => orange
[3] => banana
)
تابع array_pop
این تابع یک آرایه بصورت ارجاعی میگیره و آخرین مقدار از آرایه ی ارجاعی رو حذف میکنه و بعنوان نتیجه میتونیم در یک متغیر دیگه بریزیمش یا اینکه چاپش کنیم.
$stack = array("orange", "banana", "apple", "raspberry");
$fruit = array_pop($stack);
echo $fruit; // output => raspberry
print_r($stack);
##################
// stack
Array
(
[0] => orange
[1] => banana
[2] => apple
)
تابع array_shift
برخلاف مثال قبلی که زدیم (array_pop) عمل میکند.
array_shift یک آرایه بصورت ارجاعی میگیره و اولین خانه آرایرو رد میده و حذف میکنه و این خانه از آرایه رو میتونیم بعنوان نتیجه برگردونیم.
$stack = array("orange", "banana", "apple", "raspberry");
$fruit = array_shift($stack);
echo $fruit; // output => orange
print_r($stack);
#######################
// stack
Array
(
[0] => banana
[1] => apple
[2] => raspberry
)
تابع array_key_exists
چک میکنه , ایندکسی که دنبالش هستیم در آرایه مد نظر وجود داره یا نه , اگر وجود داشت , جواب true است در غیر اینصورت false.
دو تا پارامتر میگیره:
- ایندکسی که به دنبالش هستیم
- آرایه ی مد نظر
$search_array = array('first' => 1, 'second' => 4);
if (array_key_exists('first', $search_array)) // true
{
echo "The 'first' element is in the array";
}
مثال قبلو اگر برای ایندکس first با تابع isset چک کنیم نتیجه ی false برمیگردونه.
دلیلش این هست که مقدار first برابره null هست. ولی اگر بدنبال این هستیم که همچین ایندکسی در این آرایه اصلا وجود داره یا نه باید از array_key_exists استفاده کنیم:
$search_array = array('first' => null, 'second' => 4);
// returns false
echo isset($search_array['first']);
// returns true
echo array_key_exists('first', $search_array);
تابع array_slice
استخراج قسمتی از آرایه.
4 آرگومان دارد:
- یک آرایه میگیره
- نقطه ی شروع
* اگر مقدار منفی باشد از انتهای آرایه محاسبه میشه. - طول (اختیاری)
* اگر طول بزرگتر از طول آرایه باشد , تنها مقادیر قابل دسترس و موجود برمیگردد.
* اگر طول منفی باشد , از پایان آرایه به اندازه طول داده شده از جواب حذف میشود. - اگر مقدار true بدیم نام index های (عددی) باقی میمونه در غیر اینصورت by default ایندکس ها از 0 مقدار دهی میشن. (اختیاری)
$input = array("a", "b", "c", "d", "e");
$output = array_slice($input, 2); // returns "c", "d", and "e"
$output = array_slice($input, -2, 1); // returns "d"
$output = array_slice($input, 0, 3); // returns "a", "b", and "c"
مثال دیگه:
$input = array("a", "b", "name"=>"c", 2=>"d", "e");
$output = array_slice($input, 2, -1);
print_r($output);
*************
// result
Array
(
[name] => c
[0] => d
)
########################################
$input = array("a", "b", "name"=>"c", 2=>"d", "e", "f");
$output = array_slice($input, 2, -1, true);
print_r($output);
**************
// result
Array
(
[name] => c
[2] => d
[3] => e
)
تابع array_search
mixed array_search ( mixed $needle , array $haystack [, bool $strict = false ] )
3 آرگومان:
- مقداری که به دنبالش هستیم.
- آرایه ی مد نظر
- آیا type مقادیر , در نظر گرفته شود یا خیر. (اختیاری - پیش فرض : نوع مقادیر لحاظ نمی شود.)
همونطور که از اسم تابع مشخصه , مقداری به تابع میدیم و در آرایه , این مقدار جستجو میشه.
اگر عبارت پیدا شد , کلید مقدار برگردانده میشود در غیر اینصورت False.
مثال:
$array = array(0 => 'blue', 1 => 'red', 2 => 'green', 3 => 'red');
$key = array_search('green', $array, true); // $key = 2;
$key = array_search('red', $array); // $key = 1;
اما اگر پارامتر سومو true بذاریم , در مقایسه از (===) استفاده میشود یعنی type هم در نظر گرفته میشود.
تفاوت true و false رو تو مثال زیر دیده میشه: (تفاوت رشته و مقدار عددی)
$array = array( 0 => '1', 1 => '2', 2 => 2 , 3 => '3' ); $key = array_search(2, $array, FALSE); // $key = 1; $key = array_search(2, $array, TRUE); // $key = 2;
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .