Array Functions2

✅ 30. array_map() – تطبيق دالة على كل عنصر في المصفوفة
$numbers = [1, 2, 3, 4];
$squared = array_map(function($num) {
    return $num * $num;
}, $numbers);

print_r($squared); // [1, 4, 9, 16]
PHP

🟢 الفائدة: لتعديل أو تحويل العناصر دون استخدام foreach.
⚠️ محذور: يُرجع مصفوفة جديدة، لا يُعدّل الأصلية.

✅ 31. array_filter() – تصفية المصفوفة حسب شرط
$nums = [1, 2, 3, 4, 5, 6];
$even = array_filter($nums, function($n) {
    return $n % 2 === 0;
});
print_r($even); // [2, 4, 6]
PHP

🟢 الفائدة: تصفية العناصر بدون استخدام حلقة foreach.
⚠️ محذور: يحتفظ بالمفاتيح الأصلية.

✅ 32. array_reduce() – اختصار المصفوفة إلى قيمة واحدة
$nums = [1, 2, 3, 4];
$sum = array_reduce($nums, function($carry, $item) {
    return $carry + $item;
});
echo $sum; // 10
PHP

🟢 الفائدة: تستخدم في عمليات مثل الجمع، الضرب، التحقق من الشروط العامة… إلخ.
⚠️ محذور: القيمة الأولية carry تبدأ بـ null ما لم تُحدد.

✅ 33. array_walk() – تنفيذ دالة على كل عنصر (يمرر بالقيمة والمفتاح)
$students = ["Ali" => 90, "Sara" => 80];
array_walk($students, function($value, $key) {
    echo "$key حصل على $value درجة\n";
});
PHP

🟢 الفائدة: مفيدة للطباعة أو التعديل الشرطي.
⚠️ محذور: للتعديل على المصفوفة نفسها، استخدم &$value.

✅ 34. compact() – تحويل متغيرات إلى مصفوفة
$name = "Yasin";
$age = 25;
$data = compact("name", "age");
print_r($data); // ["name" => "Yasin", "age" => 25]
PHP

🟢 الفائدة: مفيد جدًا في إرسال بيانات كثيرة دفعة واحدة (مثلًا إلى view في Laravel أو ملفات HTML).

✅ 35. extract() – تحويل مصفوفة إلى متغيرات
$user = ["name" => "Yasin", "age" => 25];
extract($user);
echo $name; // Yasin
echo $age;  // 25
PHP

⚠️ محذور مهم: قد يكتب فوق متغيرات موجودة بنفس الاسم، لذلك استخدمه بحذر.
🟢 يفيد: في اختصار الشيفرة في views أو الصفحات المؤقتة.

✅ 36. array_column() – استخراج عمود معين من مصفوفة متعددة الأبعاد
$users = [
    ["id" => 1, "name" => "Ali"],
    ["id" => 2, "name" => "Sara"],
    ["id" => 3, "name" => "Yasin"]
];
$names = array_column($users, "name");
print_r($names); // ["Ali", "Sara", "Yasin"]
PHP

🟢 الفائدة: تجميع قيم من مصفوفات متعددة الأبعاد.

✅ 37. array_combine() – دمج مصفوفتين: واحدة مفاتيح والثانية قيم
$keys = ["name", "age"];
$values = ["Yasin", 25];
$combined = array_combine($keys, $values);
print_r($combined); // ["name" => "Yasin", "age" => 25]
PHP

⚠️ محذور: يجب أن تكون المصفوفتان بنفس الطول وإلا ستعطي خطأ.

ملخص استخدامي سريع:
الدالةالوظيفة الأساسية
array_map()تعديل جماعي على كل عنصر
array_filter()إبقاء عناصر تحقق شرط معيّن
array_reduce()اختصار المصفوفة لقيمة واحدة
array_walk()تنفيذ دالة على كل عنصر (طباعة – تعديل – تنبيه)
compact()تحويل متغيرات إلى مصفوفة
extract()تحويل مصفوفة إلى متغيرات
array_column()سحب عمود من مصفوفات متعددة الأبعاد
array_combine()دمج مفاتيح وقيم من مصفوفتين في مصفوفة واحدة
🔹 38. array_flip() – تبادل المفاتيح مع القيم

🔁 تقوم هذه الدالة بعكس مواقع المفاتيح والقيم في المصفوفة.

✅ مثال:
$colors = [
    "red" => 1,
    "green" => 2,
    "blue" => 3
];

$flipped = array_flip($colors);
print_r($flipped);

// النتيجة:
[
    1 => "red",
    2 => "green",
    3 => "blue"
]
PHP
✅ الفوائد:
  • مفيد عند الحاجة للبحث عن القيمة كمفتاح.
  • تُستخدم كثيرًا عند إنشاء جداول مرجعية.
⚠️ محاذير:
  • القيم يجب أن تكون مميزة وفريدة، وإلا سيتم الكتابة فوق بعضها.
  • لا يمكن استخدام قيم تحتوي على Arrays أو Objects.
🔹 39. array_keys() و array_values()
array_keys() – استخراج المفاتيح فقط:
$user = [
    "name" => "Yasin",
    "age" => 25
];

$keys = array_keys($user);
print_r($keys); // ["name", "age"]
PHP
array_values() – استخراج القيم فقط:
$values = array_values($user);
print_r($values); // ["Yasin", 25]
PHP
✅ الفوائد:
  • مفيدة في عمليات التحقق، التكرار، التحليل البرمجي (parsing).
  • تستخدم لتصفية أو فحص المفاتيح فقط أو القيم فقط.
⚠️ محاذير:
  • array_keys() يُمكن أن يُستخدم مع فلترة حسب قيمة أيضًا:
array_keys($user, 25); // تبحث عن المفاتيح التي قيمتها 25
PHP
🔹 40. array_key_first() و array_key_last()
array_key_first() – إرجاع أول مفتاح:
$data = ["first" => 1, "second" => 2, "third" => 3];
echo array_key_first($data); // first
PHP
array_key_last() – إرجاع آخر مفتاح:
echo array_key_last($data); // third
PHP
✅ الفوائد:
  • أفضل من استخراج array_keys() ثم استخدام reset() أو end() لأنها أسرع وأخف.
⚠️ محاذير:
  • يجب التأكد من أن المصفوفة ليست فارغة، وإلا سترجع null.
🔹 41. key_exists() (مرادف لـ array_key_exists())
$data = ["name" => "Yasin", "age" => 25];

if (key_exists("name", $data)) {
    echo "الاسم موجود";
}
PHP
✅ ملاحظة:
  • key_exists() و array_key_exists() هما نفس الشيء تمامًا.
  • key_exists() جاءت لاحقًا من PHP 7.3 كاسم بديل بسيط.

✅ الفوائد:

  • يستخدم عند الحاجة للتأكد من وجود مفتاح معين داخل المصفوفة.
  • يختلف عن isset() لأنه يتحقق حتى لو القيمة null.
⚠️ مقارنة سريعة:
الدالةتتحقق من المفتاح؟تعتبر القيمة null كـ “موجودة”؟
isset($array['x'])
array_key_exists('x', $array)
📌 ملخص سريع:
الدالةالوظيفة الرئيسية
array_flip()عكس المفاتيح مع القيم
array_keys()جلب المفاتيح فقط
array_values()جلب القيم فقط
array_key_first()أول مفتاح في المصفوفة
array_key_last()آخر مفتاح في المصفوفة
key_exists() / array_key_exists()التحقق من وجود مفتاح معين