انتقل إلى محتوى الدرس
الدرس 28
دورة PHP

المصفوفات الترابطية بنظام المفتاح والقيمة في PHPPHP Associative Arrays

تعلّم المصفوفات الترابطية بنظام المفتاح والقيمة في PHP بأسلوب PHP 8 الحديث مع أمثلة عملية وتطبيقات تفاعلية.
أقسام الدرس
6
الأمثلة
5
اللغة
العربية
تاريخ النشر
غير محدد
المشاهدات
5
محتوى الدرس
في هذا الدرس 6تصفّح المواضيع

بينما تعتمد المصفوفة المفهرسة على الأرقام المتسلسلة، تستخدم المصفوفة الترابطية (Associative Array) مفاتيح نصية وصفية للوصول إلى القيم، تماماً مثل القاموس أو جدول التجزئة (Hash Map):

  • وضوح دلالة البيانات: بدلاً من محاولة تذكر ماذا يعني العنصر $user[2]، يمكنك قراءة $user["email"] بوضوح تام.
  • الحفاظ على ترتيب الإدخال: تتميز مصفوفات PHP بأنها تحفظ المفاتيح بنفس الترتيب الزمني الذي أُضيفت به.
مخطط يوضح المصفوفات الترابطية في PHP 8.4 بنظام المفتاح والقيمة وفحص المفاتيح وحذفها
PHP
<?php
$article = [
    "slug"   => "php-associative-arrays",
    "views"  => 1450,
    "active" => true,
];
echo $article["slug"] . " (" . $article["views"] . ")";

نستخدم معامل السهم المزدوج (=>) داخل الأقواس المربعة [...] لربط كل مفتاح نصي بقيمته المقابلة:

  • التمييز عن سهم الكائنات: يُكتب سهم المصفوفة بعلامة يساوي متبوعة بعلامة أكبر من (=>).
  • قاعدة تفرد المفاتيح: يجب أن يكون كل مفتاح فريداً داخل المصفوفة؛ وإذا تكرر نفس المفتاح مرتين، فإن القيمة الأخيرة تستبدل القيمة الأولى تلقائياً.
PHP
<?php
$config = [
    "app_name" => "CloseTag",
    "timezone" => "UTC",
    "debug"    => false,
];
var_dump($config);

تتم قراءة قيمة مفتاح أو تعديلها أو إضافة مفتاح جديد تماماً عبر نفس صياغة الإسناد بالأقواس المربعة $array["key"] = $value;:

  • إذا كان المفتاح موجوداً مسبقاً: يُحدّث محرك PHP قيمته في نفس موضعه دون تغيير ترتيب المفاتيح.
  • إذا كان المفتاح جديداً: يضيف محرك PHP الزوج الجديد (المفتاح والقيمة) في نهاية المصفوفة الترابطية.
PHP
<?php
$product = [
    "sku"   => "KB-900",
    "price" => 120.00,
];

// Update existing key & add a new key:
$product["price"] = 99.50;
$product["stock"] = 15;
echo $product["sku"] . ": $" . $product["price"] . " (" . $product["stock"] . ")";

لفحص وجود مفتاح داخل مصفوفة ترابطية قبل قراءته، توفر لغة PHP طريقتين أساسيتين يختلف سلوكهما عندما تكون قيمة المفتاح null:

  • البنية isset($arr["key"]): تُرجع true فقط إذا كان المفتاح موجوداً وكانت قيمته لا تساوي null.
  • الدالة array_key_exists("key", $arr): تُرجع true بمجرد وجود المفتاح داخل المصفوفة حتى لو كانت قيمته المخزنة هي null (وهو أمر شائع في سجلات قواعد البيانات).
مخطط تدفق التنفيذ العملي لقسم فحص المفاتيح بدالة array_key_exists في لغة PHP
PHP
<?php
$row = [
    "id"         => 42,
    "deleted_at" => null,
];

var_dump(isset($row["deleted_at"]));            // bool(false)
var_dump(array_key_exists("deleted_at", $row)); // bool(true)

لحذف مفتاح وقيمته نهائياً من المصفوفة، نمرر العنصر إلى البنية المدمجة unset($array["key"]):

  • إزالة كاملة للمفتاح: إسناد القيمة $arr["k"] = null; يُبقي المفتاح موجوداً داخل المصفوفة، بينما تقوم unset($arr["k"]); بمسح المفتاح تماماً فينقص طول المصفوفة count($arr) بمقدار واحد.
  • حذف عدة مفاتيح معاً: يمكنك تمرير أكثر من مفتاح في استدعاء واحد مثل unset($user["password"], $user["token"]);.
PHP
<?php
$account = [
    "id"            => 10,
    "email"         => "[email protected]",
    "password_hash" => "secret_hash",
];
unset($account["password_hash"]);
echo "Keys left: " . count($account);

يقارن الجدول المرجعي التالي بين المصفوفة المفهرسة والمصفوفة الترابطية في PHP 8.4:

وجه المقارنةالمصفوفة المفهرسة (Indexed)المصفوفة الترابطية (Associative)
نوع المفاتيحأعداد صحيحة متسلسلة (0, 1, 2...)مفاتيح نصية وصفية ("id", "email")
صياغة الإنشاء["PHP", "CSS", "JS"]["lang" => "PHP", "ver" => 8]
الاستخدام الأمثلقوائم العناصر المتماثلة المرتبةتمثيل سجل بيانات مهيكل أو إعدادات النظام
فحص وجود المفتاحisset($a[0]) أو $a[0] ?? nullarray_key_exists("k", $a) أو isset($a["k"])
خلاصة المعرفة ومحطة الانتقال

ملخص الدرس

حصاد الدرس

مراجعة مركّزة لأهم المفاهيم والقواعد الهندسية التي أتقنتها في هذا الدرس قبل التطبيق العملي

ماذا تعلّمت في هذا الدرس؟

أتقنت في هذا الدرس بنية المصفوفات الترابطية في PHP، واستخدام معامل السهم المزدوج =>، وقراءة وتعديل المفاتيح النصية، والفرق الدقيق بين isset() وarray_key_exists() مع القيم الفارغة null، وحذف المفاتيح عبر unset(). الخطوة التالية: انتقل إلى الدرس الثاني والعشرين «تكرار عناصر المصفوفات عبر حلقة foreach في PHP» للدوران على المفاتيح والقيم بسلاسة.

مشاركة

هل كان هذا الدرس مفيدًا؟

جارٍ تحميل الآراء…

ابنِ لغتك البرمجية

المصطلحات4

راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.

0 / 4 مفهومةأول بطاقة، أول خطوة
01 Associative Arrays المصفوفات الترابطية
تعلّم المصفوفات الترابطية بنظام المفتاح والقيمة في PHP بأسلوب PHP 8 الحديث مع أمثلة عملية وتطبيقات تفاعلية.
للمراجعة
02 Key Value Pairs Architecture معمارية المفتاح والقيمة الترابطية
المفهوم الأساسي لقسم معمارية المفتاح والقيمة الترابطية في لغة PHP الحديثة.
للمراجعة
03 Creating Associative Arrays إنشاء المصفوفات الترابطية بالسهم
الصياغة البرمجية والتطبيق العملي المباشر لقسم إنشاء المصفوفات الترابطية بالسهم.
للمراجعة
04 Accessing and Updating by Key القراءة والتعديل عبر اسم المفتاح
قواعد التحقق وأفضل الممارسات القياسية الخاصة بقسم القراءة والتعديل عبر اسم المفتاح.
للمراجعة

اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.

حروف قليلة. معنى كامل.

الاختصارات4

راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.

0 / 4 مفهومةأول بطاقة، أول خطوة
01 PHP PHP
PHP: Hypertext Preprocessor
لغة البرمجة النصية على جانب الخادم لبناء تطبيقات الويب الديناميكية وواجهات البرمجة.
للمراجعة
02 CLI CLI
Command-Line Interface
واجهة سطر الأوامر التي تتيح تشغيل ملفات PHP مباشرة عبر الطرفية.
للمراجعة
03 FPM FPM
FastCGI Process Manager
مدير عمليات FastCGI عالي الأداء لمعالجة طلبات خادم الويب في PHP.
للمراجعة
04 HTML HTML
HyperText Markup Language
لغة الترميز القياسية التي يولدها محرك PHP ويرسلها إلى متصفح العميل بعد التنفيذ.
للمراجعة

اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.

من الفهم للتطبيق

مهامك قبل الاختبار

خطوة صغيرة كل مرة. وإنجاز تقدر ترجع له.

0/2مهام منجزة
  1. أنشئ ملف PHP محلياً ونفّذ المثال البرمجي المشروح في قسم معمارية المفتاح والقيمة الترابطية للتحقق من المخرجات.

  2. بدّل بين الحالات الثلاث في المحاكي التفاعلي ضمن قسم إنشاء المصفوفات الترابطية بالسهم وقارن مخرجات التنفيذ.

تأشير المهمة إقرار منك بإتمامها، وليس تصحيحًا آليًا للكود. يُحفظ تقدمك في حسابك.

مساحة التحدي

اختبر فهمك.
ووصلها للإتقان.

كل سؤال خطوة لقدّام. اختار، اكتب كود، وشوف نتيجتك فورًا.

8أسئلة 3أنواع تحديات 100%هدف الإتقان
تصحيح تلقائي. فرص بلا حدود.

أكمل المهام، واجمع كل الإجابات الصحيحة. أقل من 100%؟ راجع وأعد المحاولة.

الأسئلة متاحة للاطلاع. سجّل الدخول للتفاعل وحفظ تقدمك.

لمحة عن التحدي8 أسئلة تنتظرك
01

ما المعامل المستخدم لربط المفتاح النصي بقيمته داخل المصفوفة الترابطية في PHP؟

يُستخدم معامل السهم المزدوج (=>) لربط المفتاح بالقيمة داخل مصفوفات PHP.

02

إذا كانت لدينا المصفوفة $user = ["name" => "Sara", "role" => "Editor"]; فكيف نقرأ القيمة "Editor"؟

عبر كتابة اسم المفتاح النصي بين علامات تنصيص داخل القوسين المربعين: $user["role"].

03

إذا كانت $row = ["discount" => null]; فما ناتج كل من isset($row["discount"]) و array_key_exists("discount", $row)؟

تُرجع isset() القيمة false لأن القيمة هي null، بينما تُرجع array_key_exists() القيمة true لأن المفتاح موجود فعلياً.

04

تحافظ المصفوفات الترابطية في لغة PHP على الترتيب الفعلي الذي أُضيفت به المفاتيح.

صواب؛ تحفظ مصفوفات PHP ترتيب إدخال العناصر بدقة.

05

ما البنية المدمجة في لغة PHP التي تحذف المفتاح وقيمته نهائياً من المصفوفة؟

تقوم البنية unset($array["key"]) بإزالة المفتاح وقيمته تماماً من المصفوفة.

06

إذا قمت بتعريف نفس المفتاح النصي مرتين داخل نفس المصفوفة (مثل ["mode" => "dev", "mode" => "prod"])، فإن القيمة الثانية تستبدل القيمة الأولى.

صواب؛ لأن مفاتيح المصفوفة فريدة، فتقوم القيمة الأحدث باستبدال القيمة الأقدم لنفس المفتاح.

07

ما نوعا البيانات المسموح بهما natively كمفاتيح للمصفوفات في لغة PHP؟

تقبل مفاتيح المصفوفات في PHP الأعداد الصحيحة (int) والنصوص (string) فقط.

08

أي عبارتين مما يلي صحيحتان حول المصفوفات الترابطية في PHP 8؟

يجب دائماً وضع المفاتيح النصية بين علامات تنصيص، وإسناد قيمة لمفتاح جديد يضيفه إلى المصفوفة.