توابع پیشرفته آرایه
بررسی جامع توابع آرایه PHP — array_map، array_filter، array_reduce، array_column و دهها تابع دیگر
توابع آرایه پیشرفته
PHP بیش از ۸۰ تابع برای کار با آرایهها دارد. در این مبحث مهمترین آنها را بررسی میکنیم.
array_map() — اعمال تابع روی همه عناصر
<?php
$numbers = [1, 2, 3, 4, 5];
// ضرب هر عنصر در ۲
$doubled = array_map(fn($n) => $n * 2, $numbers);
// [2, 4, 6, 8, 10]
// بزرگنویسی همه عناصر
$names = ["ali", "mary", "hassan"];
$upper = array_map("ucfirst", $names);
// ["Ali", "Mary", "Hassan"]
?>
array_filter() — فیلتر کردن عناصر
<?php
$numbers = [1, 2, 3, 4, 5, 6];
// فقط اعداد زوج
$evens = array_filter($numbers, fn($n) => $n % 2 === 0);
// [2, 4, 6]
// حذف مقادیر خالی
$data = ["a", "", "b", null, "c", 0];
$clean = array_filter($data); // ["a", "b", "c"]
?>
array_reduce() — کاهش آرایه به یک مقدار
<?php
$numbers = [1, 2, 3, 4, 5];
// جمع همه
$sum = array_reduce($numbers, fn($carry, $n) => $carry + $n, 0);
// 15
// ضرب همه
$product = array_reduce($numbers, fn($carry, $n) => $carry * $n, 1);
// 120
?>
array_column() — استخراج ستون
<?php
$users = [
["id" => 1, "name" => "علی", "age" => 25],
["id" => 2, "name" => "مریم", "age" => 22],
["id" => 3, "name" => "حسن", "age" => 30],
];
$names = array_column($users, "name");
// ["علی", "مریم", "حسن"]
$ages = array_column($users, "age", "name");
// ["علی" => 25, "مریم" => 22, "حسن" => 30]
?>
array_chunk() — تقسیم آرایه
<?php
$items = ["a", "b", "c", "d", "e", "f"];
$chunks = array_chunk($items, 2);
// [["a","b"], ["c","d"], ["e","f"]]
?>
array_combine() — ترکیب کلید و مقدار
<?php
$keys = ["name", "age", "city"];
$values = ["علی", 25, "تهران"];
$combined = array_combine($keys, $values);
// ["name" => "علی", "age" => 25, "city" => "تهران"]
?>
array_flip() — جابجا کردن کلید و مقدار
<?php
$arr = ["a" => 1, "b" => 2, "c" => 3];
$flipped = array_flip($arr);
// [1 => "a", 2 => "b", 3 => "c"]
?>
array_unique() — حذف تکراریها
<?php
$arr = [1, 2, 2, 3, 3, 3, 4];
$unique = array_unique($arr);
// [1, 2, 3, 4]
?>
array_slice() — برش آرایه
<?php
$arr = ["a", "b", "c", "d", "e"];
print_r(array_slice($arr, 1, 3)); // ["b", "c", "d"]
print_r(array_slice($arr, -2)); // ["d", "e"]
?>
array_merge() vs array_replace()
<?php
$a = ["a" => 1, "b" => 2];
$b = ["b" => 3, "c" => 4];
// merge: مقادیر دومی جایگزین میشود
$merged = array_merge($a, $b); // ["a"=>1, "b"=>3, "c"=>4]
// replace: مثل merge ولی کلیدهای عددی را هم جایگزین میکند
$replaced = array_replace($a, $b);
?>
array_walk() — پیمایش با ارجاع
<?php
$fruits = ["apple", "banana", "cherry"];
array_walk($fruits, function(&$value, $key) {
$value = ucfirst($value) . " ($key)";
});
// ["Apple (0)", "Banana (1)", "Cherry (2)"]
?>
توابع مرتبسازی پیشرفته
| تابع | توضیح |
|---|---|
usort() | مرتبسازی با تابع سفارشی |
uasort() | مرتبسازی با حفظ کلید |
uksort() | مرتبسازی کلیدها با تابع |
array_multisort() | مرتبسازی چند آرایه |
سایر توابع مفید
| تابع | توضیح |
|---|---|
array_sum() | جمع مقادیر |
array_product() | ضرب مقادیر |
array_rand() | کلید تصادفی |
array_fill() | پر کردن با مقدار |
range() | تولید بازه اعداد |
compact() | ساخت آرایه از متغیرها |
extract() | استخراج متغیر از آرایه |
array_diff() | تفاضل دو آرایه |
array_intersect() | اشتراک دو آرایه |
این مبحث بخشی از دوره آموزش کامل PHP است.