توابع array_map و array_filter - آزمون برنامه نویسی پی اچ پی php
توابع کاربردی آرایه ها array_map و array_filter
امروز می خوام درباره دو تا از باحال ترین و پرکاربردترین توابع PHP باهاتون حرف بزنم. این دو تا تابع، یعنی array_map و array_filter، کارمون رو توی مدیریت و پردازش آرایه ها خیلی آسون و جذاب می کنن.
دیگه نیازی نیست برای هر کار ساده ای کلی حلقه و کد بنویسیم. با این دو تا، کدتون خیلی تمیزتر و خواناتر می شه.

array_map: تغییر شکل اعضای آرایه
فرض کن یه آرایه داری و می خوای روی هر کدوم از اعضاش یه عملیاتی انجام بدی و نتیجه رو توی یه آرایه جدید ذخیره کنی. مثلاً می خوای همه اعداد یه آرایه رو دو برابر کنی. راه قدیمی و سختش این بود که با یه حلقه foreach دونه دونه اعداد رو بگیری، دو برابر کنی و توی یه آرایه جدید بریزی. اما با array_map، این کار یه خط کده!
این تابع دو تا ورودی اصلی می گیره: اولی یه تابع (Callback Function) که می خوای روی هر عضو آرایه اجرا بشه و دومی خود آرایه اس. این تابع Callback می تونه یه تابع معمولی، یه تابع ناشناس (Anonymous Function) یا حتی یه Arrow Function باشه.
مثال: دو برابر کردن اعداد یه آرایه
- استفاده از Anonymous Function
$numbers = [1, 2, 3, 4, 5]; $doubled_numbers = array_map(function($n) { return $n * 2; }, $numbers); print_r($doubled_numbers); // خروجی: Array ( [0] => 2 [1] => 4 [2] => 6 [3] => 8 [4] => 10 ) - استفاده از Arrow Function (جدیدتر و باحال تر)
$numbers = [1, 2, 3, 4, 5]; $doubled_numbers = array_map(fn($n) => $n * 2, $numbers); print_r($doubled_numbers); // خروجی: Array ( [0] => 2 [1] => 4 [2] => 6 [3] => 8 [4] => 10 )
یه نکته جالب: می تونی چند تا آرایه رو همزمان به array_map بدی و تابع Callbackت هم به تعداد آرایه ها ورودی بگیره.
array_filter: فیلتر کردن آرایه بر اساس شرط
حالا فرض کن یه آرایه از اعداد داری و می خوای فقط اونایی که زوج هستن رو جدا کنی. اینجاست که array_filter میاد وسط. این تابع هم مثل array_map یه تابع Callback می گیره، اما فرقش اینه که تابع Callback باید یه مقدار بولی (true یا false) برگردونه. اگه true برگردونه، اون عضو توی آرایه نهایی قرار می گیره و اگه false باشه، حذف می شه.
مثال: فیلتر کردن اعداد زوج از یک آرایه
- استفاده از Anonymous Function
$numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; $even_numbers = array_filter($numbers, function($n) { return $n % 2 == 0; }); print_r($even_numbers); // خروجی: Array ( [1] => 2 [3] => 4 [5] => 6 [7] => 8 [9] => 10 ) - استفاده از Arrow Function
$numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; $even_numbers = array_filter($numbers, fn($n) => $n % 2 == 0); print_r($even_numbers); // خروجی: Array ( [1] => 2 [3] => 4 [5] => 6 [7] => 8 [9] => 10 )
ببینید چقدر کد تمیز و خواناست! دیگه خبری از اون حلقه های قدیمی نیست.
مقایسه array_map و array_filter
بیاین این دو تا رو با هم مقایسه کنیم تا تفاوتشون رو بهتر درک کنیم.
| ویژگی | array_map |
array_filter |
|---|---|---|
| هدف | اعمال یک تغییر روی هر عضو و ایجاد آرایه جدید | حذف اعضا بر اساس یک شرط |
| مقدار برگشتی تابع Callback | هر نوع مقداری | true یا false |
| تعداد ورودی تابع Callback | به تعداد آرایه های ورودی | یک ورودی (عضو آرایه) |
این دو تا تابع واقعا قدرت و سرعت کدنویسی شما رو بالا می برن.
حالا وقتشه که خودت رو بسنجی! شرکت توی آزمون این مبحث بهت کمک می کنه تا ببینی چقدر این مفاهیم رو درست و عمیق یاد گرفتی. با شرکت توی این کوییز، می تونی مهارت های عملی و دانش تئوری خودت رو در استفاده از توابع آرایه ای PHP تقویت کنی.