سلام.
همونطور که از عنوان مطلب مشخصه توابعی که بیشتر کاربرد دارنو اینجا معرفی میکنم.
تابع array_keys
این تابع 3 تا آرگومان داره:
توضیحات:
این تابع ایندکس های یک آرایه رو بر میگردونه.
$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 )
حروف ایندکس آرایه رو به حروف کوچک یا بزرگ تبدیل میکنه.
دو تا آرگومان داره:
$input_array = array("FirSt" => 1, "SecOnd" => 4); print_r(array_change_key_case($input_array, CASE_UPPER));
خروجی:
Array ( [FIRST] => 1 [SECOND] => 4 )
تابع renge
یک آرایه شامل طیفی از عناصر میسازه.
سه تا آرگومان داره:
$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 تا آرگومان:
$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 )
چک میکنه , ایندکسی که دنبالش هستیم در آرایه مد نظر وجود داره یا نه , اگر وجود داشت , جواب 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 آرگومان دارد:
$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 آرگومان:
همونطور که از اسم تابع مشخصه , مقداری به تابع میدیم و در آرایه , این مقدار جستجو میشه.
اگر عبارت پیدا شد , کلید مقدار برگردانده میشود در غیر اینصورت 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;
نویسنده: محسن موحد