شرح المصفوفات الترابطية في PHP
تخيل أنك تبني نظام تسجيل دخول. بعد نجاح تسجيل المستخدم، تحتاج التعامل مع بياناته مثل الاسم والبريد والدور.
هل من المنطقي الوصول لهذه القيم بأرقام مثل [0] و[1]؟ ليس دائماً.
هنا نستخدم المصفوفات الترابطية في PHP (Associative Arrays)، حيث كل قيمة لها اسم واضح (Key) يجعل الكود أسهل قراءة وصيانة.
ما هي المصفوفة الترابطية في PHP؟
هي مصفوفة تعتمد على مفاتيح نصية (Keys) بدلاً من الفهارس الرقمية.
"name" => "Rachid"
"email" => "rachid@example.com"
"role" => "admin"
بهذا الشكل يصبح الوصول للبيانات واضحاً: $user["email"] أفضل من $user[1].
كيفية تعريف Associative Array
نستخدم الرمز => لربط كل مفتاح بقيمته:
<?php
$user = [
"name" => "Rachid",
"email" => "rachid@example.com",
"role" => "student"
];
?>
الوصول إلى القيم عبر المفتاح
الكود:
<?php
$user = [
"name" => "Rachid",
"email" => "rachid@example.com",
"role" => "student"
];
echo "الاسم: " . $user["name"] . "<br>";
echo "البريد: " . $user["email"];
?>
ما يظهر في المتصفح:
الاسم: Rachid
البريد: rachid@example.com
المرور على المفاتيح والقيم باستخدام foreach
عند الحاجة لعرض كل البيانات، استخدم foreach مع المفتاح والقيمة:
<?php
$user = [
"name" => "Rachid",
"email" => "rachid@example.com",
"role" => "student"
];
foreach ($user as $key => $value) {
echo "$key: $value <br>";
}
?>
ما يظهر في المتصفح:
name: Rachid
email: rachid@example.com
role: student
Indexed vs Associative: متى أستخدم كل واحدة؟
| الحالة | Indexed Array | Associative Array |
|---|---|---|
| قائمة قيم متشابهة | أفضل | ممكن لكن أقل شيوعاً |
| بيانات وصفية (اسم، بريد، دور) | أقل وضوحاً | أفضل |
| سهولة قراءة الكود لاحقاً | متوسطة | عالية |
أخطاء شائعة في المصفوفات الترابطية
- خطأ في اسم المفتاح: كتابة
"Email"بدل"email". - الخلط بين الأقواس: نستخدم
[]للوصول للقيم وليس(). - استخدام مفاتيح غير واضحة: مثل
"x1"بدل أسماء مفهومة. - توقع ترتيب ثابت دائماً: لا تعتمد على الترتيب إلا إذا كنت تتحكم به بوضوح.
تمرين تطبيقي سريع
- أنشئ مصفوفة
$courseفيها المفاتيح:title،teacher،price. - اطبع عنوان الدورة واسم المدرس.
- استخدم
foreachلطباعة كل مفتاح مع قيمته. - أضف مفتاحاً جديداً مثل
levelواطبعه.
هدف التمرين: أن تتعامل مع البيانات كما ستفعل في التطبيقات الحقيقية، وليس فقط كأمثلة نظرية.
الأسئلة الشائعة — FAQ
ما هي المصفوفة الترابطية في PHP؟
هي مصفوفة تُخزّن البيانات بمفاتيح نصية واضحة بدلاً من الأرقام.
متى أستخدمها بدل المصفوفة المفهرسة؟
عندما يكون لكل قيمة اسم وصفي مثل الاسم والبريد والحالة.
كيف أصل إلى قيمة داخلها؟
عبر المفتاح مباشرة مثل $user["name"].
كيف أطبع كل المفاتيح والقيم؟
باستخدام foreach ($array as $key => $value).