تابع array_map در PHP برای اعمال یک تابع مشخص بر روی هر عنصر یک یا چند آرایه استفاده میشود و نتیجه را به صورت یک آرایه جدید بازمیگرداند. این تابع بسیار مفید است برای زمانی که بخواهیم یک عملیات خاص را بر روی تمامی عناصر یک یا چند آرایه انجام دهیم.
syntax
array_map(callable $callback, array $array1, array ...$arrays): array
پارامترها
- callback: یک تابع قابل فراخوانی که بر روی هر عنصر آرایهها اعمال میشود. این تابع میتواند یک تابع داخلی PHP، یک تابع تعریف شده توسط کاربر، یا یک تابع بینام (anonymous function) باشد.
- array1: آرایهای که تابع باید بر روی عناصر آن اعمال شود.
- arrays: سایر آرایهها که میتوانند به عنوان پارامترهای اضافی به تابع داده شوند. در این حالت، تابع callback باید تعداد پارامترهایی به تعداد آرایهها داشته باشد.
مثالها
استفاده از تابع داخلی PHP
$numbers = [1, 2, 3, 4, 5];
$squaredNumbers = array_map('sqrt', $numbers);
print_r($squaredNumbers);
خروجی:
Array
(
[0] => 1
[1] => 1.4142135623731
[2] => 1.7320508075689
[3] => 2
[4] => 2.2360679774998
)
استفاده از تابع تعریف شده توسط کاربر
function multiplyByTwo($num) {
return $num * 2;
}
$numbers = [1, 2, 3, 4, 5];
$doubledNumbers = array_map('multiplyByTwo', $numbers);
print_r($doubledNumbers);
خروجی:
Array
(
[0] => 2
[1] => 4
[2] => 6
[3] => 8
[4] => 10 )
استفاده از تابع بینام (anonymous function)
$numbers = [1, 2, 3, 4, 5];
$incrementedNumbers = array_map(function($num) {
return $num + 1;
}, $numbers);
print_r($incrementedNumbers);
خروجی:
Array
(
[0] => 2
[1] => 3
[2] => 4
[3] => 5
[4] => 6
)
استفاده از چند آرایه
$numbers1 = [1, 2, 3];
$numbers2 = [4, 5, 6];
$sum = array_map(function($a, $b) {return $a + $b;}, $numbers1, $numbers2);
print_r($sum);
خروجی:
Array
(
[0] => 5
[1] => 7
[2] => 9 )
مزایا
- کاهش پیچیدگی کد: به جای استفاده از حلقههای تکراری، با استفاده از array_map میتوانید عملیاتهای مورد نظر خود را به صورت مستقیم و تمیز انجام دهید.
- افزایش خوانایی کد: کدهایی که با استفاده از array_map نوشته میشوند، اغلب خواناتر و فهمیدنیتر از حلقههای پیچیده هستند.
- عملکرد بهتر: در بسیاری از موارد، استفاده از توابع داخلی PHP مانند array_map میتواند عملکرد بهتری نسبت به نوشتن حلقههای دستی داشته باشد، چرا که این توابع بهینهسازی شدهاند.
نکات مهم
- طول آرایههای ورودی باید یکسان باشد، در غیر این صورت array_map تا طول کوتاهترین آرایه عمل میکند و بقیه عناصر را نادیده میگیرد.
- اگر فقط یک آرایه ورودی داده شود، تابع callback تنها یک پارامتر دریافت میکند.
- اگر چندین آرایه ورودی داده شود، تابع callback به ازای هر عنصر از هر آرایه یک پارامتر دریافت میکند.
تابع array_map ابزاری قدرتمند برای اعمال تغییرات یکسان بر روی تمامی عناصر یک یا چند آرایه به صورت کارآمد و تمیز میباشد.