سلام. در این پست توابع کاربردی کار با آرایه ها رو معرفی میکنم.
برای آشنایی و اطلاعات بیشتر در مورد هر تابع لینک مرجع تابع از سایت php.net قرار گرفته.
توابع این پست به تدریج کاملتر خواهد شد.
تابع array_keys
array array_keys ( array $array [, mixed $search_value [, bool $strict = false ]] )
این تابع سه آرگومان داره:
- اولین پارامتری که میگیره , یک آرایه اس.
- دومین پارامتری که میگیره , 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 بوده و خانه ی صفرم و سوم و چهارم برابر blue هستن و تابع این ایندکس هارو برگردونده.
پارامتر سوم اگر true بدید زمانیکه سرچ انجام میشود از operator سه تا مساوی (===) برای مقایسه استفاده میکنه.تفاوت سه تا مساوی با دو تا مساوی در شرط اینه که سه تا مساوی علاوه بر برابر بودن مقادیر باید type اشونم یکی باشه یعنی هر دو عدد باشن یا هر دو رشته باشن بعبارت دیگه سه تا مساوی برابر این شرطه:
if ($a==$b && gettype($a) == gettype($b))
* gettype نوع متغیر بر میگردونه.
تابع array_merge
array array_merge ( array $array1 [, array $... ] )
توضیحات:
این تابع آرایه هارو ادغام میکنه.(با هر تعداد , پارامتری که به تابع بدهید.)
$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
array array_reverse ( array $array [, bool $preserve_keys = false ] )
تابع دو آرگومان دارد:
- یک آرایه میگیرد.
- پارامتر دوم اختیاریه و پیش فرض false. اگر مقدار true بدیم , مقدار ایندکس های عددی تغییری نمیکنن و فقط جاهاشون تغییر میکنه و ایندکس های غیر عددی نام ایندکس تغییری نمیکند.
توضیحات:
خوب اینم مشخصه دیگه.آرایه رو معکوس میکنه.(از خانه ی آخر به خانه ی صفرم)
$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
)
مثال بهمراه پارامتر دوم و مقدار true:(ادامه ی مثال قبلی)
$preserved = array_reverse($input, true);
print_r($preserved);
خروجی:
Array
(
[2] => Array
(
[0] => green
[1] => red
)
[1] => 4
[0] => php
)
* به مقدار ایندکس ها توجه کنید.
تابع array_values
array array_values ( array $array )
تابع یک آرگومان داره:
- مقادیر یک آرایه رو برمیگردونه.
$array = array("size" => "XL", "color" => "gold");
print_r(array_values($array));
خروجی:
Array
(
[0] => XL
[1] => gold
)
array array_change_key_case ( array $array [, int $case = CASE_LOWER ] )
تابع دو آرگومان دارد:
- آرایه میگیره
- حالتو میگیره : 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
array range ( mixed $start , mixed $end [, number $step = 1 ] )
تابع سه آرگومان دارد:
- مقداری برای گام شروع
- مقداری برای گام پایان
- گام پیمایش مراحل , عددی مثبت میگیره و (اختیاریه) و پیش فرض = 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
array list ( mixed $var1 [, mixed $... ] )
همانطور که از فرم این تابع در خط قبلی مشخصه , این تابع لیستی از متغیر ها میگیره و این متغیر هارو بترتیب مقدار دهی میکنه.
$info = array('coffee', 'brown', 'caffeine'); // an array
list($drink, $color, $power) = $info;
echo $drink; // coffee
echo $color; // brown
echo $power; // caffeine
تابع count
int count ( mixed $array_or_countable [, int $mode = COUNT_NORMAL ] )
تابع دو آرگومان دارد:
- یک آرایه یا یک آبجکت قابل شمارش میگیره
- Mode میگیره که با COUNT_RECURSIVE یا 1 مقدار دهی میشه و (اختیاریه)
- بصورت بازگشتی شمارش میکنه و تمام عناصر آرایه های چند بعدی رو شمارش میکنه.(در حالت COUNT_RECURSIVE)
توضیحات:
تعداد عناصرو شمارش میکنه.
$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
bool is_array ( mixed $var )
تابع یک آرگومان دارد:
- یک متغیر میگیره و چک میکنه که متغیری که دادیم , یک آرایه هست یا نه.
$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
array array_count_values ( array $array )
تابع یک آرگومان دارد:
- این تابع یک آرایه میگیره و یک آرایه برمیگردونه که مشخص میکنه هر value چند بار تکرار شده.
- آرایه ای که برمیگردونه , مقدار ایندکس هاش برابر مقدار 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
array array_flip ( array $array )
تابع یک آرگومان دارد:
- یک آرایه میگیره و آرایه ای بر میگردونه که جای key و 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
number array_sum ( array $array )
تابع یک آرگومان دارد:
- آرایه ای از مقادیر میگیره و جمع مقادیرو بصورت عددی یا اعشاری بر میگردونه.
$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
bool shuffle ( array &$array )
تابع یک آرگومان دارد:
- یک آرایه میگیره (بصورت ارجاعی) و مقادیر آرایه بصورت رندم مخلوط میشن و جاهاشون عوض میشه.
$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
int array_push ( array &$array , mixed $value1 [, mixed $... ] )
رفتار این تابع مثل یک پشته (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
int array_unshift ( array &$array , mixed $value1 [, mixed $... ] )
بر خلاف تابع (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
mixed array_pop ( array &$array )
تابع یک آرگومان دارد:
- این تابع یک آرایه بصورت ارجاعی میگیره و آخرین مقدار از آرایه ی ارجاعی رو حذف میکنه و بعنوان نتیجه میتونیم در یک متغیر دیگه قرار بدیم یا اینکه چاپش کنیم و ...
$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
mixed array_shift ( array &$array )
تابع یک آرگومان دارد:
- یک آرایه بصورت ارجاعی میگیره و اولین خانه آرایرو شیفت میده و حذف میشه.
- همچنین میتونیم این خانه ی شیفت شده از آرایه رو بعنوان نتیجه برگردونیم.
$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
bool array_key_exists ( mixed $key , array $array )
تابع دو آرگومان دارد:
- ایندکسی که به دنبالش هستیم
- آرایه ی مد نظر
توضیحات:
این تابع چک میکنه , ایندکسی که دنبالش هستیم در آرایه مورد نظر وجود داره یا نه , اگر وجود داشت , جواب 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
array array_slice ( array $array , int $offset [, int $length = NULL [, bool $preserve_keys = false ]] )
تابع چهار آرگومان دارد:
- یک آرایه میگیره
- نقطه ی شروع
* اگر مقدار منفی باشد از انتهای آرایه محاسبه میشه. - طول (اختیاری)
* اگر طول بزرگتر از طول آرایه باشد , تنها مقادیر قابل دسترس و موجود برمیگردد.
* اگر طول منفی باشد , از پایان آرایه به اندازه طول داده شده از جواب حذف میشود. - اگر مقدار true بذاربم , نام ایندکس های (عددی) باقی میمونه در غیر اینصورت به صورت پیشفرض , ایندکس ها از 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 ] )
تابع سه آرگومان دارد:
- مقداری که به دنبالش هستیم.
- آرایه ی مد نظر
- آیا 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;
ادامه دارد....
سلام داداش گل کاشتی .خیلی عالی بود .خیلی هم زحمت کشیدی. دستت درد نکنه