Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

الوصول إلى القيم عبر المفتاح

جزء من قسم 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"].

challenge icon

التحدي

سهل

اقرأ سطراً من المدخلات يحتوي على كائن 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، ثم:

  1. قم بالوصول إلى القيمة المرتبطة بـ key1 واطبعها
  2. قم بتخزين القيمة المرتبطة بـ key2 في متغير يسمى $info
  3. اطبع القيمة المخزنة في $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

?>
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس Fundamentals