🔹 ما هي المصفوفة؟
المصفوفة هي متغير واحد يمكنه تخزين أكثر من قيمة بداخله، بدلاً من إنشاء متغير لكل قيمة.
مثال بسيط:
$student1 = "ياسين";
$student2 = "سارة";
$student3 = "كريم";
PHP📌 هذا غير عملي، الحل الأفضل:
$students = ["ياسين", "سارة", "كريم"];
PHP✅ فوائد المصفوفات:
الفائدة | الشرح |
---|---|
🔸 تخزين مجموعة من القيم في متغير واحد | |
🔸 سهولة التكرار والتحكم بالقيم | |
🔸 أساس قوي لمعالجة البيانات الكبيرة | |
🔸 تستخدم مع قواعد البيانات، JSON، النماذج… | |
🔸 تسهل البرمجة النظيفة والمنظمة |
⚠️ محاذير عند استخدام المصفوفات:
المحذور | الشرح |
---|---|
❌ استخدام أنواع مختلفة داخل مصفوفة بدون داعٍ | |
❌ نسيان الفهرس عند التعامل مع البيانات | |
❌ الخلط بين أنواع المصفوفات (ترابطية ومفهرسة) | |
❌ الكتابة فوق القيم دون قصد | |
❌ استخدام دوال الترتيب بدون فهم المفاتيح |
🧱 أنواع المصفوفات في PHP
1️⃣ Indexed Arrays – المصفوفات المفهرسة (بالأرقام)
📌 يتم الوصول للعناصر باستخدام أرقام تبدأ من 0.
✅ طريقة الإنشاء:
// طريقة 1
$colors = array("أحمر", "أخضر", "أزرق");
// طريقة 2 (الأحدث)
$colors = ["أحمر", "أخضر", "أزرق"];
PHP✅ الوصول للقيم:
echo $colors[0]; // أحمر
echo $colors[2]; // أزرق
PHP✅ التكرار باستخدام foreach:
foreach($colors as $color) {
echo $color . "<br>";
}
PHP2️⃣ Associative Arrays – المصفوفات الترابطية (مفاتيح نصية)
📌 كل عنصر له مفتاح (Key) مخصص بدل الرقم.
✅ الإنشاء:
$person = [
"name" => "ياسين",
"age" => 25,
"city" => "دمشق"
];
PHP✅ الاستخدام:
echo $person["name"]; // ياسين
echo $person["age"]; // 25
PHP✅ التكرار:
foreach($person as $key => $value) {
echo "$key: $value<br>";
}
PHP3️⃣ Multidimensional Arrays – المصفوفات متعددة الأبعاد
📌 مصفوفة بداخل مصفوفة (مثل جدول أو بيانات مركبة).
✅ مثال:
$students = [
["ياسين", 90, "علوم"],
["سارة", 85, "رياضيات"],
["كريم", 92, "لغة"]
];
PHP✅ الوصول إلى عنصر:
echo $students[0][0]; // ياسين
echo $students[2][1]; // 92
PHP✅ التكرار المزدوج:
foreach($students as $student) {
foreach($student as $info) {
echo $info . " | ";
}
echo "<br>";
}
PHP🎯 مقارنة بين الأنواع الثلاثة:
النوع | مثال الوصول | الشكل |
---|---|---|
مفهرسة | $arr[0] | [قيمة1, قيمة2, …] |
ترابطية | $arr["name"] | [“name” => قيمة] |
متعددة | $arr[0][1] | [[قيمة1, قيمة2], […]] |
🧠 استخدامات المصفوفات في مشاريع حقيقية:
السيناريو | نوع المصفوفة المستخدم |
---|---|
قائمة أسماء – students | Indexed |
بيانات مستخدم – name, email | Associative |
نتائج طلاب – مصفوفة بداخلها بيانات طالب | Multidimensional |
JSON API Data | Multidimensional & Associative |
معالجة نتائج بحث أو نماذج | Associative |
✅ مثال تطبيقي شامل:
$users = [
[
"name" => "ياسين",
"email" => "[email protected]"
],
[
"name" => "نور",
"email" => "[email protected]"
]
];
foreach($users as $user) {
echo "الاسم: " . $user["name"] . "<br>";
echo "البريد: " . $user["email"] . "<hr>";
}
PHP3️⃣ كيفية إنشاء المصفوفات (Create Arrays)
🔹 الطريقة التقليدية:
$colors = array("أحمر", "أخضر", "أزرق");
PHP🔹 الطريقة الأحدث (من PHP 5.4):
$colors = ["أحمر", "أخضر", "أزرق"];
PHP✅ ملاحظة: كلا الطريقتين صحيحتين، لكن نستخدم الطريقة الأحدث
[]
لسهولتها وانتشارها.
4️⃣ الوصول إلى العناصر (Accessing Elements)
✅ المصفوفة المفهرسة:
$colors = ["أحمر", "أخضر", "أزرق"];
echo $colors[0]; // أحمر
echo $colors[2]; // أزرق
PHP✅ المصفوفة الترابطية:
$user = [
"name" => "ياسين",
"age" => 25
];
echo $user["name"]; // ياسين
PHP⚠️ محذور: محاولة الوصول لمفتاح غير موجود يعطي خطأ من نوع Notice.
5️⃣ تعديل القيم داخل المصفوفة (Modify Elements)
✅ تعديل عنصر في مصفوفة مفهرسة:
$colors = ["أحمر", "أخضر", "أزرق"];
$colors[1] = "أصفر";
print_r($colors);
// النتيجة: ["أحمر", "أصفر", "أزرق"]
PHP✅ تعديل قيمة بمفتاح ترابطي:
$user = ["name" => "ياسين", "age" => 25];
$user["age"] = 26;
PHP✅ الفائدة: تعديل القيم ديناميكيًا دون إعادة إنشاء المصفوفة.
6️⃣ إضافة عناصر للمصفوفة (Add Elements)
✅ المصفوفة المفهرسة:
$colors = ["أحمر", "أخضر"];
$colors[] = "أزرق"; // يضيف في نهاية المصفوفة
PHPأو باستخدام array_push()
:
array_push($colors, "أسود", "أبيض");
PHP✅ المصفوفة الترابطية:
$user["email"] = "[email protected]";
PHP⚠️ محذور: إذا أضفت نفس المفتاح سيُستبدل، لا يُضاف مرتين.
7️⃣ حذف العناصر من المصفوفة (Remove Elements)
✅ باستخدام unset():
$colors = ["أحمر", "أخضر", "أزرق"];
unset($colors[1]); // يحذف "أخضر"
PHP⚠️ المفتاح لا يُعاد ترتيبه تلقائيًا!
✅ حذف عنصر من مصفوفة ترابطية:
unset($user["email"]);
PHP✅ إعادة ترتيب المفاتيح بعد الحذف (للمصفوفات المفهرسة):
$colors = array_values($colors);
PHP🎯 نصيحة: استخدم
array_splice()
للحذف وإعادة الترتيب بسهولة.
8️⃣ التكرار على المصفوفات (Looping Arrays)
✅ باستخدام foreach (الأكثر شيوعًا):
$colors = ["أحمر", "أخضر", "أزرق"];
foreach($colors as $color) {
echo $color . "<br>";
}
PHP✅ مع المفاتيح:
foreach($user as $key => $value) {
echo "$key: $value<br>";
}
PHP✅ باستخدام for (مع المصفوفات المفهرسة):
$colors = ["أحمر", "أخضر", "أزرق"];
for ($i = 0; $i < count($colors); $i++) {
echo $colors[$i] . "<br>";
}
PHP🎯 ملاحظة:
count()
يُحسب كل مرة، والأفضل تخزينه في متغير لتوفير الأداء.
✅ باستخدام while:
$i = 0;
while ($i < count($colors)) {
echo $colors[$i] . "<br>";
$i++;
}
PHP📌 خلاصة الفروقات بين التكرار:
الطريقة | الأفضلية |
---|---|
foreach | الأفضل للقراءة والتكرار على كل العناصر |
for | مفيد عندما تحتاج فهرسة |
while | عندما لا تعرف عدد التكرارات أو تحتاج شروطًا ديناميكية |
✅ تطبيق شامل:
$students = [
"ياسين" => 90,
"سارة" => 85,
"كريم" => 95
];
foreach ($students as $name => $grade) {
echo "$name حصل على $grade درجة<br>";
}
PHP