توابع کار با آرایه در php - بخش دوم
سه شنبه 17 اردیبهشت 1392توابع کار با آرایه در php - بخش دوم <br/> در مطلب گذشته از بخش آموزش های مقدماتی php، با چند تابع مربوط به کار با آرایه ها آشنا شدیم که هر کدام با هدف خاصی در مفسر این زبان تعریف شده اند،
در مطلب گذشته از بخش آموزش های مقدماتی php، با چند تابع مربوط به کار با آرایه ها آشنا شدیم که هر کدام با هدف خاصی در مفسر این زبان تعریف شده اند، در واقع هنگامی که می خواهیم یک برنامه کاربردی بنویسیم تا عملیات خاصی را برایمان انجام دهد، باید ایده هایمان را به کمک این دستورات و توابع، دقیق و حساب شده به مفسر سرور تفهیم کنیم و لذا نمی توان خارج از قواعد (syntax) هر زبان (در اینجا php)، هر آنچه می خواهیم بنویسیم، به هر صورت با ذکر این مقدمه کوتاه در ادامه مطلب نگاهی خواهیم داشت به سری دوم از توابع مربوط به کار با آرایه ها در php.
تابع array_fill_keys
تابع array_fill_keys که از نسخه 5.2 به php افزوده شده، یک آرایه را به عنوان آرگومان اول و یک مقدار را به عنوان آرگومان دوم دریافت می کند، سپس مقدار موجود در آرایه اول را به عنوان کلید و مقادیر موجود در آرگومان دوم را به عنوان مقدار در نظر می گیرد و در نهایت یک آرایه جدید می سازد، به مثال زیر توجه کنید.
<?phpخروجی مثال بالا به صورت زیر خواهد بود.
$key_array = array('a', 'b', 'c');
$fill_array = array_fill_keys($key_array, 'php tutorial');
print_r($fill_array);
?>
Array
(
[a] => php tutorial
[b] => php tutorial
[c] => php tutorial
)
تابع array_fill
تابع array_fill برای ایجاد یک آرایه جدید با مقادیر مورد نظر کاربرد دارد، در اینجا از سه آرگومان استفاده می شود، آرگومان اول یک عدد است که اولین کلید ما را مشخص می کند، آرگومان دوم تعداد عناصر (کلید و مقدار) آرایه جدید را مشخص می کند و آرگومان سوم، عبارتی است که به عنوان مقادیر کلیدهای آرایه جدید استفاده می شود، به مثال زیر توجه کنید.
<?phpخروجی مثال بالا به صورت زیر خواهد بود.
$fill_array = array_fill(1, 4, 'php tutorial');
print_r($fill_array);
?>
Arrayنکته: اگر مقادیر آرگومان اول که نقطه شروع کلیدهای آرایه است، به صورت عدد منفی باشد، در آرایه جدید، اولین کلید همان مقدار منفی است، اما کلیدهای بعدی از صفر شروع می شوند، مثال زیر روشن است.
(
[1] => php tutorial
[2] => php tutorial
[3] => php tutorial
[4] => php tutorial
)
<?phpخروجی مثال بالا به صورت زیر خواهد بود.
$fill_array = array_fill(-3, 4, 'php tutorial');
print_r($fill_array);
?>
Array
(
[-3] => php tutorial
[0] => php tutorial
[1] => php tutorial
[2] => php tutorial
)
تابع array_filter
تابع array_filter برای حذف موارد مورد نظر از یک آرایه استفاده می شود، این تابع دو آرگومان می پذیرد، آرگومان اول نام آرایه و آرگومان دوم نام تابع را در خود جای می دهد، نحوه کار آن نیز به این صورت است که مقادیر آرایه، در یک حلقه، به تابع بازگشتی (callback function) فرستاده می شود و اگر این تابع، true یا عدد 1 را برگرداند، آن مقدار در آرایه نهایی خواهد بود، اما اگر تابع مقادیر false یا 0 را برگرداند، آن مقدار (و کلید) از آرایه نهایی حذف خواهد شد، به مثال زیر توجه کنید.
<?phpخروجی مثال بالا به صورت زیر خواهد بود.
function CheckArray($array){
if($array < 5){
return TRUE;
}
else{
return FALSE;
}
}
$array = array(1, 2, 3, 4, 5, 6);
$array_filter = array_filter($array, 'CheckArray');
print_r($array_filter);
?>
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
)
تابع array_flip
تابع array_flip جای کلید و مقدار را در یک آرایه تغییر می دهد، به طور مثال اگر عدد 1 کلید و عبارت php مقدار آن کلید باشد، با استفاده از تابع array_flip، عبارت php به عنوان کلید و عدد 1 به عنوان مقدار آرایه در نظر گرفته می شود، البته مقدار آرایه باید الزاما یک عدد (integer) یا رشته (string) باشد، نکته دوم اینکه اگر مقادیر در آرایه چند بار تکرار شده باشند، آخرین کلید به عنوان مقدار در نظر گرفته می شود، به مثال زیر توجه کنید.
<?phpخروجی مثال بالا به طورت زیر خواهد بود.
$array = array('php', 'html', 'php', 'javascript', 'mysql', 'css', 'mysql', 'ajax');
$array_flip = array_flip($array);
print_r($array_flip);
?>
Array
(
[php] => 2
[html] => 1
[javascript] => 3
[mysql] => 6
[css] => 5
[ajax] => 7
)
تابع array_intersect_assoc
تابع array_intersect_assoc جهت مقایسه و استخراج کلید و مقدار مشترک بین دو آرایه استفاده می شود، این تابع دو آرگومان می پذیرد، آرگومان اول آرایه اصلی و آرگومان دوم آرایه دیگر برای مقایسه با آرایه اصلی است، نتیجه نیز یک آرایه جدید با کلید و مقادیری است که بین دو آرگومان مشترک هستند، به مثال زیر توجه کنید.
<?phpخروجی مثال بالا به صورت زیر خواهد بود.
$array_1 = array(12 => 'php', 14 => 'html', 18=> 'css');
$array_2 = array(19=> 'css', 13 => 'php', 14 => 'html');
$array_intersect = array_intersect_assoc($array_1, $array_2);
print_r($array_intersect);
?>
Array
(
[14] => html
)
تابع array_intersect_key
تابع array_intersect_key نیز برای مقایسه دو آرایه و استخراج کلیدهای مشترک استفاده می شود، این تابع دو آرگومان می پذیرد، آرگومان اول آرایه اصلی و آرگومان دوم آرایه دیگر برای مفایسه با آرایه اصلی است، نتیجه نیز یک آرایه جدید با کلیدهایی است که بین دو آرگومان مشترک هستند، به مثال زیر توجه کنید.
<?phpخروجی مثال بالا به صورت زیر خواهد بود.
$array_1 = array(12 => 'php', 14 => 'html', 18=> 'css');
$array_2 = array(19=> 'css', 18 => 'php', 14 => 'html');
$array_intersect = array_intersect_key($array_1, $array_2);
print_r($array_intersect);
?>
Array
(
[14] => html
[18] => css
)
تابع array_intersect_uassoc
تابع array_intersect_uassoc جهت مقایسه و استخراج کلید با مقدار مشترک بین دو آرایه استفاده می شود، این تابع سه آرگومان می پذیرد، آرگومان اول آرایه اصلی و آرگومان دوم آرایه دیگر برای مفایسه با آرایه اصلی است، آرگومان سوم نیز یک تابع بازگشتی (callback function) جهت اعمال تنظیمات در مقایسه بین دو آرایه است، این تابع می تواند سه عدد 1، صفر یا 1- را برگرداند، نتیجه نیز یک آرایه جدید با مقادیری است که بین دو آرگومان مشترک هستند (با در نظر گرفتن تنظیمات تابع و مقایسه کلیدها)، به مثال زیر توجه کنید.
<?phpخروجی مثال بالا به صورت زیر خواهد بود.
function CheckArray($array_1, $array_2){
if($array_1 > $array_2){
return 0;
}
return ($array_1 === $array_2)? 1:-1;
}
$array_1 = array(12 => 'php', 14 => 'html', 18=> 'css');
$array_2 = array(12 => 'php', 18 => 'html', 14 => 'css');
$array_intersect = array_intersect_uassoc($array_1, $array_2, 'CheckArray');
print_r($array_intersect);
?>
Arrayنکته 1: در تابعی که توسط کاربر تعریف می شود (در اینجا تابع CheckArray، برای هر کلید و مقدار آرایه ها مقایسه ای صورت می گیرد، اگر مقدار اول بزرگتر از مقادیر دوم باشد، عدد صفر برگردانده می شود و این یعنی آن مورد باید به خروجی ارسال شود، در غیر این صورت عدد 1 یا 1- برگردانده می شود و مقادیر مربوطه به خروجی ارسال نمی شوند (برعکس تابع array_diff_uassoc).
(
[18] => css
)
نکته 2: در قسمت دوم تابع CheckArray از شیوه مختصر نویسی دستورات شرطی (if و else) در php استفاده شده است، در اینجا علامت ? بعد از پرانتز مقایسه، نقش if و علامت : نقش else را دارد.
تابع array_intersect_ukey
تابع array_intersect_ukey جهت مقایسه وجود کلید های یک آرایه (آرگومان اول) در کلیدهای آرایه دوم (آرگومان دوم) با استفاده از یک تابع بازگشتی (callback function) است که سه مقدار 1، 1- و صفر را برمی گرداند، نتیجه و خروجی نیز یک آرایه جدید با کلیدها و مقادیری است که در هر دو آرایه مشترک هستند، به مثال زیر توجه کنید.
<?phpخروجی مثال بالا به صورت زیر خواهد بود.
function CheckArray($array_1, $array_2){
if($array_1 == $array_2){
return 0;
}
return ($array_1 > $array_2)? 1:-1;
}
$array_1 = array(12 => 'php', 14 => 'html', 18=> 'css');
$array_2 = array(12 => 'php', 20 => 'html', 14 => 'css');
$array_intersect = array_intersect_ukey($array_1, $array_2, 'CheckArray');
print_r($array_intersect);
?>
Array
(
[12] => php
[14] => html
[18] => css
)
تابع array_intersect
تابع array_intersect برای مقایسه دو آرایه و استخراج مقادیر مشترک (بدون در نظر گرفتن کلیدها) استفاده می شود، آرگومان اول این تابع آرایه اول و آرگومان دوم آرایه دوم است، نتیجه این تابع یک آرایه شامل مقادیر مشترک بین دو آرایه است، به مثال زیر توجه کنید.
<?phpخروجی مثال بالا به صورت زیر خواهد بود.
$array_1 = array(1, 3, 5, 7, 9);
$array_2 = array(1, 2, 3, 4, 5);
$array_intersect = array_intersect($array_1, $array_2);
print_r($array_intersect);
?>
Array
(
[0] => 1
[1] => 3
[2] => 5
)
تابع array_key_exists
تابع array_key_exists وجود یک کلید را در آرایه بررسی می کند، اگر کلید مورد نظر وجود داشت، مقادیر TRUE را برمی گرداند و در غیر این صورت مقادیر FALSE را برمی گرداند، به مثال زیر توجه کنید.
<?phpخروجی مثال بالا به صورت زیر خواهد بود.
$array = array('php' => 23, 'htm' => 44, 'css' => 21, 'mysql' => 32);
$check_array = array_key_exists('Java', $array);
if($check_array == TRUE){
echo 'Yes!';
}
else{
echo 'No!';
}
?>
No!
تابع array_keys
تابع array_keys کلیدهای یک آرایه را استخراج کرده و با آنها یک آرایه جدید می سازد، این تابع آرگومان دومی نیز می پذیرد که اگر تعیین شود، تنها کلیدهایی در آرایه خروجی چاپ می شوند که مقادیر آنها برابر با آرگومان دوم باشد، به مثال زیر توجه کنید.
<?phpخروجی مثال بالا به صورت زیر خواهد بود.
$array = array('php' => 23, 'htm' => 44, 'css' => 21, 'mysql' => 32);
$check_array = array_keys($array, '21');
print_r($check_array);
?>
Arrayنکته: در php نسخه 5 و مابعد، پارامتر سومی به نام strict به این تابع افزوده شده که اگر برابر true باشد، از علامت === به جای == برای تطبیق استفاده می شود.
(
[0] => css
)
تابع array_map
تابع array_map با استفاده از یک تابع بازگشتی (callback function) به عنوان آرگومان اول، مقادیر یک آرایه (آرگومان دوم) را تحلیل کرده و آرایه جدیدی (با مقادیر جدید) خروجی می دهد، به مثال زیر توجه کنید.
<?phpخروجی مثال بالا به صورت زیر خواهد بود.
function CallBack($value){
if($value & 1){
return 'فرد - ' . $value;
}
return 'زوج - ' . $value;
}
$array = array(1, 2, 3, 4);
$check_array = array_map('CallBack', $array);
print_r($check_array);
?>
Arrayنکته 1: در مثال بالا از عملگرهای Bitwise در php استفاده شده است (علامت &)، با استفاده از عملگرهای Bitwise می توان مقادیر عددی را با واحد بیت مقایسه کرد.
(
[0] => فرد - 1
[1] => زوج - 2
[2] => فرد - 3
[3] => زوج - 4
)
نکته 2: هنگامی که در یک تابع، return اجرا شده (و مقادیری برگردانده می شود)، در واقع به معنی پایان آن تابع (یا آن دور از به کارگیری تابع) است، لذا در هر بار فراخوانی توابع، تنها یک return اجرا می شود (هرچند در چند مرحله تابع، از return استفاده شده باشد).
تابع array_merge_recursive
تابع array_merge_recursive برای ترکیب چند لایه دو یا چند آرایه کاربرد دارد، این تابع با دریافت دو آرایه به عنوان آرگومان و با استفاده از کلیدها و مقادیر آنها، یک آرایه جدید به عنوان خروجی برمی گرداند، به مثال زیر توجه کنید.
<?phpخروجی مثال بالا به شکل زیر خواهد بود.
$array_1 = array('php' => 33, 'javascript' => 21, 'html' => 22, 'css' => 45);
$array_2 = array('mysql' => 66, 'ajax' => 34, 'javascript' => 78, 'seo' => 90);
$array_merge = array_merge_recursive($array_1, $array_2);
print_r($array_merge);
?>
Arrayنکته: همان طور که در خروجی مثال بالا مشخص است، هنگامی که یک کلید در هر دو آرایه مشترک است، ابتدا مقادیر آنها در یک آرایه جدید ترکیب شده و سپس ادامه موارد به خروجی ارسال می شوند.
(
[php] => 33
[javascript] => Array
(
[0] => 21
[1] => 78
)[html] => 22
[css] => 45
[mysql] => 66
[ajax] => 34
[seo] => 90
)
تابع array_merge
تابع array_merge برای ترکیب ساده دو یا چند آرایه کاربرد دارد، این تابع با دریافت دو آرایه به عنوان آرگومان و با استفاده از کلیدها و مقادیر آنها، یک آرایه جدید به عنوان خروجی برمی گرداند، به مثال زیر توجه کنید.
<?phpخروجی مثال بالا به شکل زیر خواهد بود.
$array_1 = array('php' => 33, 'javascript' => 21, 'html' => 22, 'css' => 45);
$array_2 = array('mysql' => 66, 'ajax' => 34, 'javascript' => 78, 'seo' => 90);
$array_merge = array_merge($array_1, $array_2);
print_r($array_merge);
?>
Arrayنکته: همان طور که در خروجی مثال بالا مشخص است، هنگامی که یک کلید در هر دو آرایه مشترک است، تنها مقادیر کلید دوم به خروجی ارسال می شود.
(
[php] => 33
[javascript] => 78
[html] => 22
[css] => 45
[mysql] => 66
[ajax] => 34
[seo] => 90
)
تابع array_pad
تابع array_pad برای گسترش یک آرایه به میزان مورد نظر استفاده می شود، این تابع سه آرگومان می پذیرد، آرگومان اول آرایه ای است که قصد گسترش آن را داریم، آرگومان دوم میزان گسترش آرایه است و آرگومان سوم مقادیری است که برای کلیدهای اضافه شده در نظر گرفته می شود، به مثال زیر توجه کنید.
<?phpخروجی مثال بالا به صورت زیر خواهد بود.
$array = array(1, 2, 3, 4, 5);
$array_pad = array_pad($array, 7, 0);
print_r($array_pad);
?>
Arrayنکته: اگر مقادیر آرگومان سوم، عددی مثبت یا صفر باشد، کلیدهای اضافه شده به انتهای آرایه افزوده می شوند، اما اگر مقادیر منفی باشد، کلیدها از ابتدای آرایه اضافه می شوند.
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
[4] => 5
[5] => 0
[6] => 0
)
توابعی که تا این لحظه بررسی نمودیم، تنها بخشی از قدرت php برای کار با آرایه ها است، لذا به جهت اهمیت موضوع، مبحث توابع کار با آرایه ها را در آموزش های آینده ادامه خواهیم داد.
- PHP
- 2k بازدید
- 3 تشکر