We are still cooking the magic in the way!
أساسيات PHP
المصفوفات المفهرسة
فهم المصفوفات المفهرسة
المصفوفات هي واحدة من أهم هياكل البيانات في 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
?>
تمرين:
- أنشئ مصفوفة بأفلامك المفضلة الخمسة
- أضف فيلماً جديداً إلى بداية المصفوفة
- أزل الفيلم الأخير من المصفوفة
- كرر واعرض كل فيلم مع موضعه
- أنشئ مصفوفة ثنائية الأبعاد تمثل لوحة تيك تاك تو (3×3) واعرضها
أفضل الممارسات
- استخدم الصيغة المختصرة
[]للحصول على كود أنظف - تحقق من وجود الفهرس باستخدام
isset()قبل الوصول - استخدم
foreachبدلاً منforعندما لا تحتاج الفهرس - تجنب إنشاء مصفوفات متفرقة (مصفوفات بها فجوات في الفهارس)
- استخدم
array_push()وarray_pop()لقابلية قراءة أفضل عند تنفيذ المكدسات - احفظ طول المصفوفة في متغير عند استخدامه عدة مرات في الحلقات
الأخطاء الشائعة التي يجب تجنبها
تحذير:
- لا تنسَ أن المصفوفات تبدأ من الفهرس 0، وليس 1
- الوصول إلى فهارس غير موجودة يولد تحذيرات
- استخدام
count()داخل شروط الحلقة غير فعال - تعديل مصفوفة أثناء التكرار عليها يمكن أن يسبب سلوكاً غير متوقع
الملخص
في هذا الدرس، تعلمت:
- كيفية إنشاء المصفوفات المفهرسة باستخدام طرق متعددة
- كيفية الوصول إلى عناصر المصفوفة وتعديلها وإضافتها
- طرق مختلفة للتكرار عبر المصفوفات
- كيفية إضافة وإزالة العناصر من المصفوفات
- العمل مع المصفوفات متعددة الأبعاد
- استخدام المصفوفات كمكدسات وطوابير
المصفوفات المفهرسة أساسية لبرمجة PHP. أتقنها جيداً، حيث تشكل الأساس لهياكل بيانات أكثر تعقيداً!