نگاشت (array_map)
با «نگاشت آرایه» (array_map) هر مقدار را به تابع بده. سپس مقدار جدید بگیر. مثل اینکه برای هر دانش آموز، نمره به روز بنویسی.
تعریف و نحو (Syntax)
نگاشت آرایه یعنی اعمال تابع روی تک تک مقدارها. نحو کلی: array_map(myfunction, array1, array2, ...). اگر چند آرایه بدهی، تابع باید چند ورودی بگیرد.
<?php
// شکل کلی
// array_map(myfunction, array1, array2, ...);
?>
مثال 1: مجذور هر عدد
هر مقدار را در خودش ضرب کن. خروجی آرایه جدید است.
<?php
function myfunction($v) {
return ($v * $v);
}
$a = array(1, 2, 3, 4, 5);
print_r(array_map("myfunction", $a));
?>
مثال 2: تغییر شرطی مقدار
اگر مقدار "Dog" بود، نامش را "Fido" کن. بقیه همان بمانند.
<?php
function myfunction($v) {
if ($v === "Dog") {
return "Fido";
}
return $v;
}
$a = array("Horse", "Dog", "Cat");
print_r(array_map("myfunction", $a));
?>
مثال 3: نگاشت روی دو آرایه
دو مقدار هم مکان را مقایسه کن. اگر برابر بودند "same" بده.
<?php
function myfunction($v1, $v2) {
if ($v1 === $v2) {
return "same";
}
return "different";
}
$a1 = array("Horse", "Dog", "Cat");
$a2 = array("Cow", "Dog", "Rat");
print_r(array_map("myfunction", $a1, $a2));
?>
مثال 4: حروف بزرگ
همه مقدارها را بزرگ بنویس. مثل تیتر روزنامه.
<?php
function myfunction($v) {
$v = strtoupper($v);
return $v;
}
$a = array("Animal" => "horse", "Type" => "mammal");
print_r(array_map("myfunction", $a));
?>
مثال 5: بدون تابع (null)
تابع را null بده. جفت های هم ردیف کنار هم می آیند.
<?php
$a1 = array("Dog", "Cat");
$a2 = array("Puppy", "Kitten");
print_r(array_map(null, $a1, $a2));
?>
ارتباط با توابع دیگر
برای فیلتر داده ها از array_filter کمک بگیر. برای پیمایش با دستکاری جانبی، array_walk مناسب است. نیاز به مرور دوباره نگاشت داشتی؟ اینجاست.
گام های عملی
- تابعت را بنویس. ورودی ها مشخص باشند.
- آرایه (ها) را آماده کن. اندازه ها هماهنگ باشند.
- با
array_mapاجرا کن و خروجی را بررسی کن.
نکات و هشدارها
نکته: تعداد پارامترهای تابع باید با تعداد آرایه ها برابر باشد.
هشدار: تابع نباید به اندیس ها وابسته باشد؛ مقدارمحور بماند.
جمع بندی سریع
- نگاشت آرایه تابع را روی مقدارها اعمال می کند.
- می توانی چند آرایه را همزمان نگاشت کنی.
nullجفت سازی ساده انجام می دهد.- برای حذف، سراغ
array_filterبرو.