الوصول إلى القيم عبر المفتاح
جزء من قسم Fundamentals في رحلة PHP على Coddy — الدرس 42 من 71.
الآن بعد أن فهمت ما هي المصفوفات الترابطية (associative arrays)، دعنا نتعلم كيفية استرداد القيم منها. تماماً كما تستخدم المصفوفات المفهرسة المواقع الرقمية، تستخدم المصفوفات الترابطية مفاتيح (keys) داخل أقواس مربعة.
<?php
$person = [
"name" => "Alice",
"age" => 25,
"city" => "Paris"
];
echo $person["name"]; // Alice
echo $person["age"]; // 25
?>الصيغة هي $array["key"]—ضع المفتاح كسلسلة نصية داخل الأقواس، وسيقوم PHP بإرجاع القيمة المرتبطة. هذا أكثر قابلية للقراءة بكثير من تذكر أن الاسم موجود في الفهرس 0.
يمكنك أيضاً تخزين القيمة المسترجعة في متغير لاستخدامها لاحقاً:
<?php
$product = [
"title" => "Laptop",
"price" => 999
];
$itemName = $product["title"];
echo $itemName; // Laptop
?>يجب أن يتطابق المفتاح تماماً—بما في ذلك حالة الأحرف. استخدام "Name" بدلاً من "name" سيؤدي إلى حدوث خطأ لأن PHP تعاملهما كمفتاحين مختلفين.
أحياناً تصل البيانات كـ سلسلة JSON نصية بدلاً من مصفوفة PHP حرفية. تعد JSON (JavaScript Object Notation) تنسيقاً نصياً شائعاً لتمثيل البيانات المهيكلة. على سبيل المثال:
$json = '{"title": "Dune", "author": "Frank Herbert", "year": 1965}';تقوم وظيفة json_decode() المدمجة في PHP بتحويل سلسلة JSON نصية إلى قيمة PHP. للحصول على مصفوفة ترابطية، قم بتمرير true كمعامل ثانٍ:
<?php
$json = '{"title": "Dune", "author": "Frank Herbert", "year": 1965}';
$book = json_decode($json, true);
echo $book["title"]; // Dune
echo $book["author"]; // Frank Herbert
echo $book["year"]; // 1965
?>بعد استدعاء json_decode($json, true)، تكون النتيجة مصفوفة ترابطية عادية ويمكنك الوصول إلى قيمها تماماً بنفس الطريقة التي تتبعها مع أي مصفوفة ترابطية أخرى—باستخدام $array["key"].
التحدي
سهلاقرأ سطراً من المدخلات يحتوي على كائن JSON يمثل معلومات كتاب (على سبيل المثال، {"title": "The Great Gatsby", "author": "F. Scott Fitzgerald", "year": 1925}).
ثم اقرأ مدخلين إضافيين:
- سلسلة نصية
key1تمثل المفتاح الأول للوصول إليه - سلسلة نصية
key2تمثل المفتاح الثاني للوصول إليه
لتحويل سلسلة JSON النصية إلى مصفوفة ترابطية (associative array)، استخدم الدالة المدمجة json_decode() مع تمرير true كمعامل ثانٍ:
$array = json_decode($jsonString, true);
المعامل الثاني true يخبر PHP بإرجاع مصفوفة ترابطية بدلاً من كائن. بمجرد فك التشفير، يمكنك الوصول إلى القيم عن طريق المفتاح تماماً مثل أي مصفوفة ترابطية، على سبيل المثال $array["title"].
قم بإنشاء مصفوفة ترابطية من مدخل JSON، ثم:
- قم بالوصول إلى القيمة المرتبطة بـ
key1واطبعها - قم بتخزين القيمة المرتبطة بـ
key2في متغير يسمى$info - اطبع القيمة المخزنة في
$info
اطبع كل نتيجة في سطر منفصل.
مثال:
إذا كانت المدخلات هي {"title": "The Great Gatsby", "author": "F. Scott Fitzgerald", "year": 1925}، و title، و author، فيجب أن يكون المخرج:
The Great Gatsby
F. Scott Fitzgeraldإذا كانت المدخلات هي {"name": "Laptop", "brand": "TechCo", "price": 999}، و brand، و price، فيجب أن يكون المخرج:
TechCo
999جرّب بنفسك
<?php
// قراءة مدخلات JSON
$jsonInput = trim(fgets(STDIN));
// قراءة المفتاحين
$key1 = trim(fgets(STDIN));
$key2 = trim(fgets(STDIN));
// TODO: اكتب كودك أدناه
// 1. قم بإنشاء مصفوفة ترابطية من مدخلات JSON باستخدام json_decode
// 2. قم بالوصول إلى القيمة المرتبطة بـ $key1 وطباعتها
// 3. قم بتخزين القيمة المرتبطة بـ $key2 في متغير يسمى $info
// 4. قم بطباعة القيمة المخزنة في $info
?>يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس Fundamentals
4معاملات المقارنة والمنطق
معاملات المقارنةالمساواة والتطابقالمعاملات المنطقية - الجزء الأولالمعاملات المنطقية - الجزء الثانيمراجعة - المنطق البسيط7المصفوفات الجزء الثاني - الترابطية
مقدمة في المصفوفات الترابطيةالوصول إلى القيم عبر المفتاحتعديل القيم عبر المفتاحإضافة أزواج (مفتاح-قيمة) جديدةالتحقق من وجود المفتاحملخص - مخزن بيانات (مفتاح-قيمة)2المتغيرات وأنواع البيانات
الأرقامالنصوص وعلامات الاقتباسالقيم المنطقية (Booleans)قواعد التسميةملخص - تهيئة المتغيراتالمتغيرات الفارغةدمج النصوصاستقبال مدخلات المستخدمتحويل أنواع البيانات5المنطق الشرطي
جملة Ifجملة If - Elseالعامل الثلاثي (Ternary Operator)عامل Null Coalescingجملة Switchمراجعة - اتخاذ القرارات3المعاملات الأساسية
المعاملات الحسابيةمعامل باقي القسمةمعامل الأسالتعيين المركبالزيادة والنقصانأسبقية المعاملاتمراجعة - الحسابات البسيطةمعاملات النصوص