أساسيات PHP

المصفوفات المفهرسة

13 دقيقة الدرس 11 من 45

فهم المصفوفات المفهرسة

المصفوفات هي واحدة من أهم هياكل البيانات في PHP. المصفوفة المفهرسة تخزن قيم متعددة في متغير واحد، مع الوصول إلى كل قيمة بواسطة فهرس رقمي يبدأ من 0.

ملاحظة: المصفوفات في PHP هي في الواقع خرائط مرتبة، مما يجعلها متعددة الاستخدامات وقوية للغاية مقارنة بالمصفوفات في العديد من اللغات الأخرى.

إنشاء المصفوفات المفهرسة

هناك عدة طرق لإنشاء المصفوفات المفهرسة في PHP:

<?php // الطريقة 1: استخدام دالة array() $fruits = array("Apple", "Banana", "Cherry"); // الطريقة 2: استخدام الصيغة المختصرة (موصى بها) $colors = ["Red", "Green", "Blue"]; // الطريقة 3: إضافة العناصر واحداً تلو الآخر $numbers = []; $numbers[0] = 10; $numbers[1] = 20; $numbers[2] = 30; // الطريقة 4: PHP يعين الفهارس تلقائياً $cities = []; $cities[] = "New York"; // الفهرس 0 $cities[] = "London"; // الفهرس 1 $cities[] = "Tokyo"; // الفهرس 2 print_r($fruits); print_r($colors); ?>
نصيحة: استخدم الصيغة المختصرة [] المقدمة في PHP 5.4+ للحصول على كود أنظف وأكثر حداثة.

الوصول إلى عناصر المصفوفة

الوصول إلى عناصر المصفوفة باستخدام الأقواس المربعة مع رقم الفهرس:

<?php $fruits = ["Apple", "Banana", "Cherry", "Date"]; // الوصول إلى العناصر الفردية echo $fruits[0]; // الناتج: Apple echo $fruits[2]; // الناتج: Cherry // الوصول إلى العنصر الأخير echo $fruits[count($fruits) - 1]; // الناتج: Date // التحقق من وجود الفهرس قبل الوصول if (isset($fruits[5])) { echo $fruits[5]; } else { echo "الفهرس غير موجود"; } ?>

تعديل عناصر المصفوفة

يمكنك تعديل العناصر الموجودة أو إضافة عناصر جديدة:

<?php $numbers = [10, 20, 30]; // تعديل عنصر موجود $numbers[1] = 25; print_r($numbers); // [10, 25, 30] // إضافة عنصر جديد في فهرس محدد $numbers[5] = 60; print_r($numbers); // [10, 25, 30, , , 60] // إضافة عنصر في النهاية $numbers[] = 70; print_r($numbers); // [10, 25, 30, , , 60, 70] ?>
تحذير: عند تعيين قيمة لفهرس غير متسلسل (مثل الفهرس 5 في المثال أعلاه)، يقوم PHP بإنشاء فهارس غير محددة بينهما. استخدم الحذر لتجنب المصفوفات المتفرقة.

طول المصفوفة والعد

استخدم count() أو sizeof() للحصول على عدد العناصر:

<?php $animals = ["Dog", "Cat", "Bird", "Fish"]; // عد العناصر $length = count($animals); echo "المصفوفة تحتوي على $length عنصر<br>"; // الناتج: 4 // sizeof() هو اسم بديل لـ count() echo sizeof($animals); // الناتج: 4 // مصفوفة فارغة $empty = []; echo count($empty); // الناتج: 0 ?>

التكرار عبر المصفوفات

هناك طرق متعددة للتكرار عبر المصفوفات المفهرسة:

<?php $fruits = ["Apple", "Banana", "Cherry", "Date"]; // الطريقة 1: حلقة for (عندما تحتاج الفهرس) for ($i = 0; $i < count($fruits); $i++) { echo "$i: $fruits[$i]<br>"; } // الطريقة 2: حلقة foreach (الأكثر شيوعاً) foreach ($fruits as $fruit) { echo "$fruit<br>"; } // الطريقة 3: foreach مع الفهرس foreach ($fruits as $index => $fruit) { echo "$index: $fruit<br>"; } // الطريقة 4: حلقة while $i = 0; while ($i < count($fruits)) { echo $fruits[$i] . "<br>"; $i++; } ?>
نصيحة: استخدم foreach لمعظم تكرارات المصفوفة - إنها أنظف وأكثر كفاءة من حلقات for.

إضافة وإزالة العناصر

يوفر PHP دوال مدمجة لإضافة وإزالة العناصر:

<?php $stack = ["Apple", "Banana"]; // إضافة إلى النهاية array_push($stack, "Cherry"); // أو استخدم: $stack[] = "Cherry"; print_r($stack); // ["Apple", "Banana", "Cherry"] // إزالة من النهاية $last = array_pop($stack); echo $last; // Cherry print_r($stack); // ["Apple", "Banana"] // إضافة إلى البداية array_unshift($stack, "Grape"); print_r($stack); // ["Grape", "Apple", "Banana"] // إزالة من البداية $first = array_shift($stack); echo $first; // Grape print_r($stack); // ["Apple", "Banana"] ?>

المصفوفات متعددة الأبعاد

يمكن أن تحتوي المصفوفات على مصفوفات أخرى، مما ينشئ هياكل متعددة الأبعاد:

<?php // مصفوفة ثنائية الأبعاد (مصفوفة) $matrix = [ [1, 2, 3], [4, 5, 6], [7, 8, 9] ]; // الوصول إلى العناصر echo $matrix[0][0]; // 1 echo $matrix[1][2]; // 6 echo $matrix[2][1]; // 8 // التكرار عبر مصفوفة ثنائية الأبعاد foreach ($matrix as $row) { foreach ($row as $value) { echo "$value "; } echo "<br>"; } // مثال على مصفوفة ثلاثية الأبعاد $data = [ [ [1, 2], [3, 4] ], [ [5, 6], [7, 8] ] ]; echo $data[1][0][1]; // 6 ?>

المصفوفة كمكدس أو طابور

يمكن استخدام المصفوفات لتنفيذ هياكل بيانات المكدس (LIFO) والطابور (FIFO):

<?php // مكدس (آخر داخل، أول خارج) $stack = []; array_push($stack, "First"); array_push($stack, "Second"); array_push($stack, "Third"); echo array_pop($stack); // Third echo array_pop($stack); // Second // طابور (أول داخل، أول خارج) $queue = []; array_push($queue, "First"); array_push($queue, "Second"); array_push($queue, "Third"); echo array_shift($queue); // First echo array_shift($queue); // Second ?>
تمرين:
  1. أنشئ مصفوفة بأفلامك المفضلة الخمسة
  2. أضف فيلماً جديداً إلى بداية المصفوفة
  3. أزل الفيلم الأخير من المصفوفة
  4. كرر واعرض كل فيلم مع موضعه
  5. أنشئ مصفوفة ثنائية الأبعاد تمثل لوحة تيك تاك تو (3×3) واعرضها

أفضل الممارسات

  • استخدم الصيغة المختصرة [] للحصول على كود أنظف
  • تحقق من وجود الفهرس باستخدام isset() قبل الوصول
  • استخدم foreach بدلاً من for عندما لا تحتاج الفهرس
  • تجنب إنشاء مصفوفات متفرقة (مصفوفات بها فجوات في الفهارس)
  • استخدم array_push() و array_pop() لقابلية قراءة أفضل عند تنفيذ المكدسات
  • احفظ طول المصفوفة في متغير عند استخدامه عدة مرات في الحلقات

الأخطاء الشائعة التي يجب تجنبها

تحذير:
  • لا تنسَ أن المصفوفات تبدأ من الفهرس 0، وليس 1
  • الوصول إلى فهارس غير موجودة يولد تحذيرات
  • استخدام count() داخل شروط الحلقة غير فعال
  • تعديل مصفوفة أثناء التكرار عليها يمكن أن يسبب سلوكاً غير متوقع

الملخص

في هذا الدرس، تعلمت:

  • كيفية إنشاء المصفوفات المفهرسة باستخدام طرق متعددة
  • كيفية الوصول إلى عناصر المصفوفة وتعديلها وإضافتها
  • طرق مختلفة للتكرار عبر المصفوفات
  • كيفية إضافة وإزالة العناصر من المصفوفات
  • العمل مع المصفوفات متعددة الأبعاد
  • استخدام المصفوفات كمكدسات وطوابير

المصفوفات المفهرسة أساسية لبرمجة PHP. أتقنها جيداً، حيث تشكل الأساس لهياكل بيانات أكثر تعقيداً!

ES
Edrees Salih
منذ 20 ساعة

We are still cooking the magic in the way!