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

سلام.همونطور که از عنوان مطلب مشخصه توابعی که بیشتر کاربرد دارنو اینجا معرفی میکنم.تابع array_keysاین تابع 3 تا آرگومان داره:اولین پارامتری که میگیره , یک آرایه اس.دومین پارامتری که میگیره , search value هست یعنی کلمه ای که میخواین دنبالش بگردین.(اختیاری)و سومین نوع 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حروف ایندکس آرایه رو به حروف کوچک یا بزرگ تبدیل میکنه.دو تا آرگومان داره:آرایه میگیرهحالتو میگیره : 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$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, &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.دو تا پارامتر میگیره:ایندکسی که به دنبالش هستیمآرایه ی مد نظر$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 آرگومان دارد:یک آرایه میگیرهنقطه ی شروع* اگر مقدار منفی باشد از انتهای آرایه محاسبه میشه.طول (اختیاری)* اگر طول بزرگتر از طول آرایه باشد , تنها مقادیر قابل دسترس و موجود برمیگردد.* اگر طول منفی باشد , از پایان آرایه به اندازه طول داده شده از جواب حذف میشود.اگر مقدار 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_searchmixed 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;نویسنده: محسن موحد