تعديل عناصر المصفوفة ثنائية الأبعاد
جزء من قسم Logic & Flow في رحلة PHP على Coddy — الدرس 29 من 68.
بمجرد أن تتمكن من الوصول إلى العناصر في مصفوفة ثنائية الأبعاد، فإن الخطوة المنطقية التالية هي تعلم كيفية تغيير قيمها. يستخدم تعديل العناصر في مصفوفة ثنائية الأبعاد نفس صيغة الفهرسة المزدوجة المستخدمة في الوصول إليها، ولكن مع معامل تعيين لتعيين قيمة جديدة.
إليك كيفية تعديل عنصر محدد في مصفوفة ثنائية الأبعاد:
<?php
$gameBoard = [
["", "", ""],
["", "", ""],
["", "", ""]
];
// تغيير الخلية المركزية إلى 'X'
$gameBoard[1][1] = "X";
// تغيير الزاوية العلوية اليسرى إلى 'O'
$gameBoard[0][0] = "O";
?>تستهدف الصيغة البرمجية $gameBoard[1][1] = "X" الصف 1، والعمود 1 (مركز شبكة 3x3) وتعين القيمة "X" لذلك الموضع. يقوم هذا بتعديل المصفوفة الأصلية مباشرة، مستبدلاً أي قيمة كانت موجودة هناك من قبل.
تعد تقنية التعديل هذه ضرورية لتحديث حالات اللعبة، أو تغيير البيانات في الجداول، أو أي سيناريو تحتاج فيه إلى تغيير مواقع محددة ضمن هيكل البيانات الشبيه بالشبكة الخاص بك. إن القدرة على تحديد وتحديث مواقع دقيقة تجعل المصفوفات ثنائية الأبعاد (2D arrays) مثالية لتمثيل المعلومات الديناميكية والقابلة للتغيير المنظمة في صفوف وأعمدة.
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
التحدي
سهلستتلقى أربعة مدخلات: مصفوفة ثنائية الأبعاد (2D array) تمثل مخطط جلوس بتنسيق JSON، وفهرس الصف (row index)، وفهرس العمود (column index)، واسم راكب جديد. قم بقراءة جميع المدخلات الأربعة، وحوّل سلسلة JSON إلى مصفوفة ثنائية الأبعاد، ثم قم بتعديل العنصر الموجود في الصف والعمود المحددين عن طريق تعيين اسم الراكب الجديد له، واطبع المصفوفة ثنائية الأبعاد المحدثة باستخدام print_r().
تمثل المصفوفة ثنائية الأبعاد مخطط جلوس حيث يحتوي كل عنصر على اسم راكب أو سلسلة فارغة للمقاعد الشاغرة.
تنسيق المدخلات:
- السطر الأول: مصفوفة JSON تمثل مخطط الجلوس (مثال:
[["Alice","Bob",""],["","Charlie","Diana"],["","",""]]) - السطر الثاني: فهرس الصف (عدد صحيح)
- السطر الثالث: فهرس العمود (عدد صحيح)
- السطر الرابع: اسم الراكب الجديد (سلسلة نصية)
المخرجات المتوقعة: المصفوفة ثنائية الأبعاد المعدلة معروضة باستخدام print_r()
ورقة مرجعية
لتعديل العناصر في مصفوفة ثنائية الأبعاد، استخدم صيغة الفهرسة المزدوجة مع عامل التعيين:
$array[row][column] = newValue;مثال على تعديل لوحة لعبة:
<?php
$gameBoard = [
["", "", ""],
["", "", ""],
["", "", ""]
];
// تغيير الخلية المركزية إلى 'X'
$gameBoard[1][1] = "X";
// تغيير الزاوية العلوية اليسرى إلى 'O'
$gameBoard[0][0] = "O";
?>يقوم هذا بتعديل المصفوفة الأصلية مباشرةً، مع استبدال القيمة في الموضع المحدد. تقنية التعديل هذه ضرورية لتحديث البيانات الديناميكية المنظمة في صفوف وأعمدة.
جرّب بنفسك
<?php
// قراءة المدخلات
$json_input = trim(fgets(STDIN));
$row_index = intval(fgets(STDIN));
$col_index = intval(fgets(STDIN));
$new_passenger = trim(fgets(STDIN));
// تحويل JSON إلى مصفوفة ثنائية الأبعاد
$seating_chart = (array)json_decode($json_input, true);
// TODO: اكتب الكود الخاص بك أدناه لتعديل مخطط الجلوس
// طباعة المصفوفة المعدلة
print_r($seating_chart);
?>يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس Logic & Flow
1الدوال المتقدمة
الدوال المجهولةالـ Closures وكلمة 'use'دوال السهمدوال الـ Callbackاستخدام 'call_user_func'دوال المتغيراتالتمرير بالمرجعالدوال العوديةمراجعة: مزيج الدوال4المصفوفات متعددة الأبعاد
إنشاء مصفوفة ثنائية الأبعادالوصول إلى عناصر المصفوفة ثنائية الأبعادتعديل عناصر المصفوفة ثنائية الأبعادالتكرار باستخدام الحلقات المتداخلةالمصفوفات الترابطية ثنائية الأبعادمراجعة: تمرين الشبكة البسيطة2معالجة المصفوفات المتقدمة
الإضافة باستخدام 'array_push'الحذف باستخدام 'array_pop'الإضافة باستخدام 'array_unshift'الحذف باستخدام 'array_shift'دمج المصفوفات المفهرسةدمج المصفوفات الترابطيةالاستخراج باستخدام 'array_slice'القيم باستخدام 'in_array'المفاتيح باستخدام 'array_search'مراجعة: تمرين قائمة التشغيل3ترتيب المصفوفات
ترتيب المصفوفات المفهرسة تصاعدياًترتيب المصفوفات المفهرسة تنازلياًترتيب المصفوفات الترابطية حسب القيمةترتيب المصفوفات الترابطية حسب المفتاحالترتيب بالترتيب الطبيعيالترتيب المخصص باستخدام 'usort'مراجعة: ترتيب لوحة المتصدرين