🔹 ما هي المصفوفة؟
المصفوفة هي متغير واحد يمكنه تخزين أكثر من قيمة بداخله، بدلاً من إنشاء متغير لكل قيمة.
مثال بسيط:
$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"]; // 25PHP✅ التكرار:
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]; // 92PHP✅ التكرار المزدوج:
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