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

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

جزء من قسم الأساسيات في رحلة PHP على Coddy. الدرس 42 من 71.

الآن بعد أن فهمت ماهية المصفوفات الترابطية، لنتعلم كيفية استرداد القيم منها. وكما تستخدم المصفوفات المفهرسة مواضع رقمية، تستخدم المصفوفات الترابطية المفاتيح داخل الأقواس المربعة.

<?php
$person = [
    "name" => "Alice",
    "age" => 25,
    "city" => "Paris"
];

echo $person["name"]; // Alice
echo $person["age"];  // 25
?>

الصياغة هي $array["key"]: ضع المفتاح كسلسلة نصية داخل الأقواس، وسيُرجع PHP القيمة associated. وهذا أكثر قابلية للقراءة بكثير من تذكّر أن الاسم موجود في الفهرس 0.

يمكنك أيضًا تخزين القيمة المستردة في متغير لاستخدامها لاحقًا:

<?php
$product = [
    "title" => "Laptop",
    "price" => 999
];

$itemName = $product["title"];
echo $itemName; // Laptop
?>

يجب أن يتطابق المفتاح تمامًا، بما في ذلك حالة الأحرف. سيؤدي استخدام "Name" بدلًا من "name" إلى حدوث خطأ، لأن PHP يتعامل معهما كمفتاحين مختلفين.

أحيانًا تصل البيانات كسلسلة JSON بدلًا من تعبير مصفوفة PHP الحرفي. يُعد JSON (ترميز كائنات JavaScript) تنسيقًا نصيًا شائعًا لتمثيل البيانات المهيكلة. على سبيل المثال:

$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 إلى مصفوفة ترابطية، استخدم الدالة المضمّنة 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اختبر نفسك

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

جميع دروس الأساسيات

تدرّب بنفسك: مترجم PHP عبر الإنترنت