الدوال الخاصة بالمصفوفات في PHP

عرض مسبق
1 دقيقة
7 دقيقة قراءة

الدوال الخاصة بالمصفوفات في PHP

شرح عملي ومباشر لأهم دوال المصفوفات في PHP واستخدامها في التطبيقات التجارية الحقيقية مثل عربة التسوق، استيراد ملفات CSV، التحليلات، ومعالجة البيانات.

لماذا المصفوفات مهمة في المشاريع الحقيقية؟

المصفوفات هي العمود الفقري لمعظم برامج PHP، وستستخدمها يوميًا في التطبيقات التجارية مثل:

  • تخزين عناصر عربة التسوق وحساب الإجمالي.
  • تحويل صفوف CSV/Excel إلى بيانات جاهزة للإدخال في قاعدة البيانات.
  • جمع وتحليل البيانات (مجموع – متوسط – عدد) للداشبورد.
  • تنظيف بيانات المدخلات قبل إدخالها لقاعدة البيانات.

هذا الدرس يشرح أهم الدوال المدمجة في PHP التي تجعل هذه العمليات أسهل وأسرع وأكثر قابلية للقراءة.

مثال تأسيسي (الكود الأساسي)

هذا هو المثال الذي بُني عليه الشرح، وسنقوم بتحليله وتوسيعه لاحقًا ليخدم سيناريوهات تجارية حقيقية.

<?php

$numbers = [1, 2, 3, 4, 5, 25];
$letters = ["hello", "a", "b", "c"];

// البحث الآمن
$index = array_search("hello", $letters, true);
if ($index !== false) {
    echo "Found 'hello' at index: {$index}\n";
}

// العد والجمع
echo "Count: " . count($letters) . "\n";
echo "Sum: " . array_sum($numbers) . "\n";

// الإضافة والحذف
array_push($numbers, 6);
array_pop($numbers);
array_unshift($letters, "z");
array_shift($letters);

// الدمج
$merged = array_merge($numbers, $letters);

// التصفية والتحويل
$even = array_filter($numbers, fn($n) => $n % 2 === 0);
$squared = array_map(fn($n) => $n * $n, $numbers);

echo "<pre>";
print_r($letters);
print_r($merged);
print_r($even);
print_r($squared);
echo "</pre>";
?>
        

أهم دوال المصفوفات – شرح واستخدامات عملية

count()

تُعيد عدد العناصر داخل المصفوفة. تستخدمها لعرض عدد عناصر السلة أو حجم البيانات قبل المعالجة.

$cart = ['sku_1', 'sku_2', 'sku_3'];
echo "Items in cart: " . count($cart);

array_sum()

جمع القيم الرقمية — مثالية لحساب إجمالي الأسعار أو مجموع القيم في التحليلات.

in_array() / array_search()

in_array لمعرفة وجود قيمة، وarray_search لمعرفة موقعها. استخدم الوضع الصارم (true).

array_push() / array_pop()

تشغيل يشبه المكدس Stack.

array_unshift() / array_shift()

تشغيل يشبه الطابور Queue.

sort(), rsort(), asort(), arsort(), usort()

دوال الفرز — ممتازة لترتيب المنتجات حسب السعر أو الشعبية.

array_merge()

دمج المصفوفات — مهم لدمج إعدادات النظام مع إعدادات المستخدم.

array_filter()

تصفية البيانات — مهم جدًا لتنظيف صفوف CSV قبل إدخالها لقاعدة البيانات.

array_map()

تطبيق تحويل على كل عنصر — مثل تحويل النصوص إلى lowercase.

array_reduce()

الحصول على قيمة نهائية واحدة — مثل حساب الإجمالي مع قواعد الخصم.

array_column()

سحب عمود معين من مصفوفة متعددة الأبعاد — مثل سحب جميع الإيميلات.

array_unique()

إزالة التكرارات — مهم لقوائم التاجز أو الإيميلات.

array_slice() / array_splice()

قص جزء من المصفوفة — مثالي للصفحات Pagination عند وجود البيانات في الذاكرة.

أمثلة عملية واقعية

مثال 1 — حساب إجمالي عربة التسوق والخصومات

$cartItems = [
    ['sku' => 'A1', 'price' => 20.0, 'qty' => 2],
    ['sku' => 'B2', 'price' => 10.0, 'qty' => 1],
];

$subtotal = array_reduce($cartItems, function($carry, $item) {
    return $carry + ($item['price'] * $item['qty']);
}, 0);

$discount = ($subtotal >= 50) ? $subtotal * 0.1 : 0;

$grandTotal = $subtotal - $discount;

echo "Subtotal: {$subtotal}, Discount: {$discount}, Total: {$grandTotal}";

مثال 2 — تنظيف بيانات CSV قبل الإدخال لقاعدة البيانات

$cleanRows = array_filter($csvRows, function($row) {
    return !empty($row['email']) && !empty($row['name']);
});

$emails = array_map(fn($r) => strtolower(trim($r['email'])), $cleanRows);
$emails = array_unique($emails);

مثال 3 — تجميع البيانات للداشبورد

$grouped = [];
foreach ($orders as $o) {
    $grouped[$o['date']] = ($grouped[$o['date']] ?? 0) + $o['total'];
}

أخطاء شائعة ونصائح مهمة

  • استخدم الوضع الصارم مع in_array و array_search.
  • انتبه لإعادة فهرسة المفاتيح عند استخدام array_merge.
  • للبيانات الكبيرة جدًا استخدم الـ Generators.
  • استخدم asort/arsort للحفاظ على المفاتيح.
  • الدوال المدمجة أسرع بكثير من استخدام loops.

ملاحظة حول الأداء

  • تجنب نسخ المصفوفات الكبيرة عدة مرات.
  • قارن دائمًا أداء array_map مقابل foreach عند الحاجة.

تمارين تطبيقية

  1. اكتب دالة تدمج المنتجات المتكررة في عربة التسوق وتجمع الكميات.
  2. أعطِ أعلى 5 منتجات مبيعًا باستخدام array_count_values و arsort.
  3. أنشئ قارئ CSV يستخدم Generator ويعتمد على array_filter.

الأسئلة الشائعة

متى أستخدم array_map بدل foreach؟

استخدم array_map عند الحاجة لتحويل مصفوفة كاملة وإرجاع مصفوفة جديدة. أما عند وجود عمليات جانبية فالأفضل foreach.

كيف أحذف عنصرًا بالقيمة؟

استخدم array_search للحصول على المفتاح ثم unset لإزالته.

هل المصفوفات مناسبة للبيانات الكبيرة؟

يفضل استخدام الـ Generators أو التجزئة Chunking لتجنب استهلاك الذاكرة.

الخلاصة

  • أتقن count، array_sum، in_array، array_search.
  • استخدم array_filter لتصفية البيانات.
  • استخدم array_map للتحويل.
  • استخدم array_reduce للحسابات المعقدة.
تعلم أساسيات برمجة مواقع ديناميكية PHP & OOP & MySQLi & PDO

تعلم أساسيات برمجة مواقع ديناميكية PHP & OOP & MySQLi & PDO

php website
سوفت ويرPHPأساسيات تطوير مواقع الإنترنت
عرض الكورس

دروس الدورة