المصفوفات متعددة الأبعاد
أنشئوا مصفوفات من المصفوفات وتجوّلوا داخلها.
المصفوفات متعددة الأبعاد درس مجاني في PHP Academy على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في PHP Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة PHP Academy 4 دروس في المجموع.
المصفوفات متعددة الأبعاد
المصفوفة متعددة الأبعاد هي مصفوفة يكون كل عنصر فيها مصفوفة بحد ذاته. وتُستخدم عادةً للبيانات المنظمة، مثل نتائج قواعد البيانات أو أشجار الإعدادات.
إنشاء مصفوفة ثنائية الأبعاد
أنشئ مصفوفة ثنائية الأبعاد ثم اعرض عناصرها:
<?php
$matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9],
];
echo $matrix[1][2]; // 6 (row 1, col 2)
$matrix[0][0] = 99;
echo $matrix[0][0]; // 99مصفوفة من المصفوفات الترابطية
غالبًا ما تكون مجموعات نتائج قواعد البيانات مصفوفات من المصفوفات الترابطية:
<?php
$users = [
['id' => 1, 'name' => 'Alice', 'role' => 'admin'],
['id' => 2, 'name' => 'Bob', 'role' => 'user'],
['id' => 3, 'name' => 'Carol', 'role' => 'user'],
];
echo $users[0]['name']; // Alice
echo count($users); // 3التكرار على المصفوفات الثنائية الأبعاد
استخدم حلقات foreach متداخلة للتكرار على جميع الصفوف والأعمدة:
<?php
$products = [
['name' => 'Widget', 'price' => 9.99],
['name' => 'Gadget', 'price' => 24.99],
];
foreach ($products as $product) {
echo $product['name'] . ': $' . $product['price'] . PHP_EOL;
}الوصول الآمن إلى المفاتيح المتداخلة
استخدم عامل الدمج مع NULL للوصول بأمان إلى المفاتيح المتداخلة التي قد لا تكون موجودة:
<?php
$config = [
'database' => ['host' => 'localhost', 'port' => 3306],
'cache' => ['driver' => 'redis'],
];
$port = $config['database']['port'] ?? 3306;
$password = $config['database']['password'] ?? '';
echo $port; // 3306
echo $password; // (empty)الإضافة إلى المصفوفات المتداخلة
أضف عناصر في عمق مصفوفة متعددة الأبعاد:
<?php
$app = [];
$app['settings']['theme'] = 'dark';
$app['settings']['lang'] = 'en';
$app['users'][] = ['name' => 'Alice'];
$app['users'][] = ['name' => 'Bob'];
echo count($app['users']); // 2
echo $app['settings']['theme']; // darkarray_column()
تستخرج array_column() عمودًا واحدًا من مصفوفة ثنائية الأبعاد:
<?php
$users = [
['id' => 1, 'name' => 'Alice'],
['id' => 2, 'name' => 'Bob'],
['id' => 3, 'name' => 'Carol'],
];
$names = array_column($users, 'name');
print_r($names); // ['Alice', 'Bob', 'Carol']
// Re-index by id
$byId = array_column($users, null, 'id');
echo $byId[2]['name']; // Bobفرز مصفوفة ثنائية الأبعاد
افرز الصفوف حسب قيمة حقل باستخدام usort():
<?php
$products = [
['name' => 'C Item', 'price' => 30],
['name' => 'A Item', 'price' => 10],
['name' => 'B Item', 'price' => 20],
];
usort($products, fn($a, $b) => $a['price'] <=> $b['price']);
foreach ($products as $p) {
echo $p['name'] . PHP_EOL; // A Item, B Item, C Item
}العمليات التكرارية باستخدام array_walk_recursive
طبّق دالة استدعاء على كل عنصر نهائي في مصفوفة متداخلة باستخدام array_walk_recursive():
<?php
$data = ['a' => 'hello', 'b' => ['c' => 'world', 'd' => 'php']];
array_walk_recursive($data, function(&$val) {
$val = strtoupper($val);
});
print_r($data);
// ['a'=>'HELLO', 'b'=>['c'=>'WORLD','d'=>'PHP']]JSON والمصفوفات متعددة الأبعاد
تتوافق المصفوفات متعددة الأبعاد في PHP مباشرةً مع كائنات ومصفوفات JSON:
<?php
$data = [
'user' => ['id' => 1, 'name' => 'Alice'],
'scores' => [95, 87, 92],
'active' => true,
];
$json = json_encode($data, JSON_PRETTY_PRINT);
echo $json;
$decoded = json_decode($json, true); // true = assoc array
echo $decoded['user']['name']; // Alicearray_merge مقارنةً بـ array_replace للمصفوفات المتداخلة
إن array_merge ليست تكرارية؛ استخدم array_replace_recursive لدمج المصفوفات المتداخلة بشكل صحيح:
<?php
$defaults = ['db' => ['host' => 'localhost', 'port' => 3306]];
$custom = ['db' => ['host' => 'production.server.com']];
$config = array_replace_recursive($defaults, $custom);
echo $config['db']['host']; // production.server.com
echo $config['db']['port']; // 3306 — preserved from defaultsتحقق سريع
ما الدالة التي تستخرج عمودًا واحدًا من القيم من مصفوفة ثنائية الأبعاد؟
مراجعة: المصفوفات متعددة الأبعاد
النقاط الأساسية:
- يمكن تداخل المصفوفات إلى أي عمق
- استخدم
??للوصول بأمان إلى المفاتيح المتداخلة المفقودة - تستخرج
array_column()عمودًا أو تعيد الفهرسة حسب مفتاح - تفرز
usort()باستخدام دالة مقارنة حسب أي حقل - استخدم
array_walk_recursive()للتحويلات العميقة - استخدم
array_replace_recursive()للدمج العميق
الأسئلة الشائعة
هل درس «المصفوفات متعددة الأبعاد» مجاني؟
نعم — نص درس «المصفوفات متعددة الأبعاد» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة PHP Academy، انتقل إلى CoddyKit PRO. تتضمن دورة PHP Academy 4 دروس في المجموع.
ماذا ستتعلم في «المصفوفات متعددة الأبعاد»؟
أنشئوا مصفوفات من المصفوفات وتجوّلوا داخلها. تتمرن على PHP Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ PHP Academy؟
لا تُشترط خبرة سابقة. PHP Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.
كم من الوقت يستغرق درس «المصفوفات متعددة الأبعاد»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس PHP Academy هذا؟
نعم. كل درس في PHP Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- المصفوفات المفهرسة والارتباطية
- المصفوفات متعددة الأبعاد
- فرز المصفوفات والبحث فيها
- دوال تحويل المصفوفات