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

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

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

الآن بعد أن فهمت ما هي المصفوفات الترابطية (associative arrays)، دعنا نتعلم كيفية استرداد القيم منها. تماماً كما تستخدم المصفوفات المفهرسة (indexed arrays) المواقع الرقمية، تستخدم المصفوفات الترابطية مفاتيح داخل أقواس مربعة.

<?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; // لابتوب
?>

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

أحياناً تصل البيانات كـ سلسلة JSON نصية بدلاً من مصفوفة PHP. تعد JSON (JavaScript Object Notation) تنسيقاً نصياً شائعاً لتمثيل البيانات المهيكلة. تقوم دالة json_decode() المدمجة في PHP بتحويل سلسلة JSON نصية إلى قيمة PHP. عندما تمرر true كمعامل ثانٍ، فإنها تعيد مصفوفة ترابطية بدلاً من كائن، لذا يمكنك الوصول إلى القيم باستخدام صيغة $array["key"] المألوفة.

<?php
$json = '{"name": "Alice", "age": 25}';

$data = json_decode($json, true);

echo $data["name"]; // Alice
echo $data["age"];  // 25
?>
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

ورقة مرجعية

لاسترداد القيم من مصفوفة ترابطية (associative array)، استخدم المفتاح داخل أقواس مربعة:

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

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

بنية الجملة هي $array["key"]. المفاتيح حساسة لحالة الأحرف.

يمكنك تخزين القيم المستردة في متغيرات:

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

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

استخدم json_decode($jsonString, true) لتحويل سلسلة JSON إلى مصفوفة ترابطية. الوسيط الثاني true يخبر PHP بإرجاع مصفوفة بدلاً من كائن:

$json = '{"name":"Alice","age":25}';
$data = json_decode($json, true);

echo $data["name"]; // Alice
echo $data["age"];  // 25

جرّب بنفسك

<?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