ویرگول
ورودثبت نام
محسن موحد (آموزش برنامه نویسی)
محسن موحد (آموزش برنامه نویسی)
خواندن ۱۰ دقیقه·۳ سال پیش

توابع کاربردی آرایه ها


سلام.
همونطور که از عنوان مطلب مشخصه توابعی که بیشتر کاربرد دارنو اینجا معرفی میکنم.

تابع array_keys

این تابع 3 تا آرگومان داره:

  1. اولین پارامتری که میگیره  , یک آرایه اس.
  2. دومین پارامتری که میگیره , search value هست یعنی کلمه ای که میخواین دنبالش بگردین.(اختیاری)
  3. و سومین نوع operator مقایسه ای هست واسه شرط تساوی با search value. (اختیاری , مقدار پیش فرض = false)

توضیحات:
این تابع ایندکس های یک آرایه رو بر میگردونه.

$array = array(0 => 100, &quotcolor&quot => &quotred&quot); print_r(array_keys($array));

خروجی:

Array ( [0] => 0 [1] => color )

* سایت php وقتی آرگومانیرو داخل کروشه ( ] ) گذاشت یعنی وجودش اختیاریه.توو مثال قبلی فقط یک پارامتر داده و پارامتر دوم چیزی واسه سرچ ندادیم , بنابر این سرچی انجام نمیشه و تمام ایندکس هارو بر میگردونه.

مثال با پارامتر دوم:

$array = array(&quotblue&quot, &quotred&quot, &quotgreen&quot, &quotblue&quot, &quotblue&quot); print_r(array_keys($array, &quotblue&quot));

خروجی:

Array ( [0] => 0 [1] => 3 [2] => 4 )

اینجا چون پارامتر دوم داده پس تمام ایندکس هارو بر نمیگردونه و دنبال اون چیزی که سرچ شده میگرده که ایجا دنبال blue بوده و خانه ی صفرم و سوم و چهارم این عبارتو داره که برگردونده.

پارامتر سوم اگر true بدید زمان سرچ از operator سه تا مساوی (===) برای مقایسه استفاده میکنه.تفاوت سه تا مساوی با دو تا مساوی در شرط اینه که سه تا مساوی علاوه بر برابر بودن مقادیر باید type اشونم یکی باشه یعنی هر دو عدد باشن یا هر دو رشته باشن بعبارت دیگه سه تا مساوی برابر این شرطه:

if ($a==$b && gettype($a) == gettype($b))

* gettype نوع متغیر بر میگردونه.



تابع array_merge

این تابع آرایه هارو ادغام میکنه.هر تعدادی که پارامتر بدید.

$array1 = array(&quotcolor&quot => &quotred&quot, 2, 4); $array2 = array(&quota&quot, &quotb&quot, &quotcolor&quot => &quotgreen&quot, &quotshape&quot => &quottrapezoid&quot, 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(&quotphp&quot, 4.0, array(&quotgreen&quot, &quotred&quot)); $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(&quotsize&quot => &quotXL&quot, &quotcolor&quot => &quotgold&quot); print_r(array_values($array));

خروجی:

Array ( [0] => XL [1] => gold )



تابع array_change_key_case

حروف ایندکس آرایه رو به حروف کوچک یا بزرگ تبدیل میکنه.
دو تا آرگومان داره:

  1. آرایه میگیره
  2. حالتو میگیره : CASE_UPPER یا CASE_LOWER  , اختیاریه و پیش فرض = CASE_LOWER
$input_array = array(&quotFirSt&quot => 1, &quotSecOnd&quot => 4); print_r(array_change_key_case($input_array, CASE_UPPER));

خروجی:

Array ( [FIRST] => 1 [SECOND] => 4 )



تابع renge

یک آرایه شامل طیفی از عناصر میسازه.
سه تا آرگومان داره:

  1. مقداری برای گام شروع
  2. مقداری برای گام پایان
  3. گام پیمایش مراحل , عددی مثبت میگیره و (اختیاریه) و پیش فرض = 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 تا آرگومان:

  1. یک آرایه یا یک آبجکت قابل شمارش میگیره
  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, &quothello&quot, 1, &quotworld&quot, &quothello&quot); print_r(array_count_values($array));

خروجی:

Array ( [1] => 2 [hello] => 2 [world] => 1 )



تابع array_flip

یک آرایه میگیره و آرایه ای بر میگردونه که جای index  و value عوض شده.
یعنی در آرایه جدید ,  ایندکس آرایه ی ورودی میشه مقدار آرایه جدید و مقدار آرایه ورودی میشه ایندکس آرایه جدید.

$input = array(&quotoranges&quot, &quotapples&quot, &quotpears&quot); $flipped = array_flip($input); print_r($flipped);

خروجی:

Array ( [oranges] => 0 [apples] => 1 [pears] => 2 ) ############################ $input = array(&quota&quot => 1, &quotb&quot => 1, &quotc&quot => 2); $flipped = array_flip($input); print_r($flipped);

خروجی:

Array ( [1] => b [2] => c )



تابع array_sum

آرایه ای از مقادیر میگیره و جمع مقادیرو بصورت عددی یا اعشاری بر میگردونه.

$a = array(2, 4, 6, 8); echo &quotsum(a) = &quot . array_sum($a) . &quot\n" // sum(a) = 20 ########################## $b = array(&quota&quot => 1.2, &quotb&quot => 2.3, &quotc&quot => 3.4); echo &quotsum(b) = &quot . array_sum($b) . &quot\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(&quotorange&quot, &quotbanana&quot); array_push($stack, &quotapple&quot, &quotraspberry&quot); print_r($stack); ########################## Array ( [0] => orange [1] => banana [2] => apple [3] => raspberry )



تابع array_ushift

بر خلاف تابع  (array_push) , که در مثال قبل معرفی کردیم , تابع array_ushift مانند یک صف عمل میکند و مقادیری که به تابع میدیم به ابتدای آرایه ی مد نظر , اضافه میکنه.

مثل مثال قبل , این تابع هم یک آرایه بصورت ارجاعی میگیره و عناصر بعدی که به عنوان پارامتر میان , به ابتدای آرایه اضافه میشن.

$queue = array(&quotorange&quot, &quotbanana&quot); array_unshift($queue, &quotapple&quot, &quotraspberry&quot); print_r($queue); ########################## Array ( [0] => apple [1] => raspberry [2] => orange [3] => banana )



تابع array_pop

این تابع یک آرایه بصورت ارجاعی میگیره و آخرین مقدار از آرایه ی ارجاعی رو حذف میکنه و بعنوان نتیجه میتونیم در یک متغیر دیگه بریزیمش یا اینکه چاپش کنیم.

$stack = array(&quotorange&quot, &quotbanana&quot, &quotapple&quot, &quotraspberry&quot); $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(&quotorange&quot, &quotbanana&quot, &quotapple&quot, &quotraspberry&quot); $fruit = array_shift($stack); echo $fruit; // output => orange print_r($stack); ####################### // stack Array ( [0] => banana [1] => apple [2] => raspberry )



تابع array_key_exists<br/>

چک میکنه , ایندکسی که دنبالش هستیم در آرایه مد نظر وجود داره یا نه , اگر وجود داشت , جواب true است در غیر اینصورت false.
دو تا پارامتر میگیره:

  1. ایندکسی که به دنبالش هستیم
  2. آرایه ی مد نظر
$search_array = array('first' => 1, 'second' => 4); if (array_key_exists('first', $search_array)) // true { echo &quotThe '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 آرگومان دارد:

  1. یک آرایه میگیره
  2. نقطه ی شروع
    * اگر مقدار منفی باشد از انتهای آرایه محاسبه میشه.
  3. طول (اختیاری)
    * اگر طول بزرگتر از طول آرایه باشد , تنها مقادیر قابل دسترس و موجود برمیگردد.
    * اگر طول منفی باشد , از پایان آرایه به اندازه طول داده شده از جواب حذف میشود.
  4. اگر مقدار true بدیم نام index های (عددی) باقی میمونه در غیر اینصورت by default ایندکس ها از 0 مقدار دهی میشن. (اختیاری)
$input = array(&quota&quot, &quotb&quot, &quotc&quot, &quotd&quot, &quote&quot); $output = array_slice($input, 2); // returns &quotc&quot, &quotd&quot, and &quote&quot $output = array_slice($input, -2, 1); // returns &quotd&quot $output = array_slice($input, 0, 3); // returns &quota&quot, &quotb&quot, and &quotc&quot

مثال دیگه:

$input = array(&quota&quot, &quotb&quot, &quotname&quot=>&quotc&quot, 2=>&quotd&quot, &quote&quot); $output = array_slice($input, 2, -1); print_r($output); ************* // result Array ( [name] => c [0] => d ) ######################################## $input = array(&quota&quot, &quotb&quot, &quotname&quot=>&quotc&quot, 2=>&quotd&quot, &quote&quot, &quotf&quot); $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 آرگومان:

  1. مقداری که به دنبالش هستیم.
  2. آرایه ی مد نظر
  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;



نویسنده: محسن موحد

برنامه نویسیphpکار با آرایه هاarrayfunction
برنامه نویس متخصص PHP، Mysql، Javascript، HTML، CSS، Node.js، Android، Laravel، Yii2 - مدیر پشتیبانی فنی و سرپرست منتورها در شرکت 7learn.com
شاید از این پست‌ها خوشتان بیاید