كيف تحذف عنصرًا من مصفوفة في PHP: من المبتدئ إلى المحترف
تخيل: أنت تكتب متجرًا إلكترونيًا، والمشتري يحذف منتجًا من سلة التسوق. أو أنك تعالج السجلات، وتحتاج إلى إزالة السجلات الزائدة. أو ببساطة تنظف المصفوفة من البيانات "غير المرغوب فيها". عاجلاً أم آجلاً، كل مطور PHP سيواجه مهمة: كيف تحذف عنصرًا من مصفوفة؟
قد يبدو الأمر بسيطًا؟ لكن هنا يبدأ الجزء المثير للاهتمام. في PHP لا توجد دالة واحدة "احذف العنصر". بدلاً من ذلك، هناك عدة طرق، لكل منها تفاصيلها الدقيقة. وإذا اخترت الطريقة الخاطئة، فقد تحصل على فجوات في المصفوفة (ترقيم مضطرب)، أو تفقد بيانات، أو ببساطة تشعر بالارتباك.
في هذه المقالة، سنستعرض جميع الطرق الأساسية لحذف العناصر من مصفوفة في PHP: من unset() البسيط إلى array_filter() المتقدم. ستتعرف على متى تستخدم كل طريقة، وستتوقف إلى الأبد عن الخوف من هذه المهمة.
1. الحذف السريع حسب المفتاح: دالة unset()
الطريقة الأكثر وضوحًا وشيوعًا هي دالة unset(). فهي تدمر متغيرًا أو عنصرًا في المصفوفة. تعمل فورًا وبشكل بديهي.
<?php$fruits = ['apple', 'banana', 'cherry', 'date'];unset($fruits[2]); // نحذف العنصر ذا الفهرس 2 ('cherry')print_r($fruits);?>النتيجة:
Array( [0] => apple [1] => banana [3] => date)ملاحظة مهمة: مفاتيح المصفوفة لا يتم إعادة ترقيمها. اختفى الفهرس 2، والآن لديك "فجوة". بالنسبة للمصفوفات الترابطية هذا طبيعي. لكن بالنسبة للقوائم (المصفوفات الرقمية) قد يصبح هذا مشكلة إذا كنت تتوقع ترقيمًا متسلسلاً (0، 1، 2، 3...).
متى تستخدم unset()؟
- تعرف بالضبط مفتاح العنصر.
- الترقيم غير مهم بالنسبة لك (مصفوفة ترابطية).
- تحتاج إلى حذف عنصر أو عنصرين.
2. الحذف حسب القيمة: array_search + unset
ماذا لو كنت لا تعرف المفتاح، لكنك تعرف القيمة؟ على سبيل المثال، تحتاج إلى حذف منتج "موز" من سلة التسوق. هنا يأتي دور array_search().
<?php$cart = ['apple', 'banana', 'cherry', 'banana'];$key = array_search('banana', $cart);if ($key !== false) { unset($cart[$key]);}print_r($cart);?>النتيجة:
Array( [0] => apple [2] => cherry [3] => banana)لاحظ: array_search() تجد أول ظهور. إذا كان هناك عدة "موزات" في المصفوفة، سيتم حذف أول واحد فقط. لحذف الكل، ستحتاج إلى استخدام حلقة أو array_diff() (سنتحدث عنها لاحقًا).
3. الحذف مع إعادة الترقيم: array_splice()
إذا كنت بحاجة إلى حذف عنصر من مصفوفة رقمية وجعل المفاتيح متسلسلة (0، 1، 2...)، استخدم array_splice(). هذه دالة قوية لا يمكنها فقط الحذف، بل أيضًا إدراج العناصر.
<?php$numbers = [10, 20, 30, 40, 50];array_splice($numbers, 2, 1); // نحذف عنصرًا واحدًا، بدءًا من الفهرس 2 (الرقم 30)print_r($numbers);?>النتيجة:
Array( [0] => 10 [1] => 20 [2] => 40 [3] => 50)المصفوفة "انضغطت" — تم إعادة حساب الفهارس. مثالي للقوائم، والطوابير، وأي بيانات متسلسلة.
صيغة array_splice()
array_splice(array &$array, int $offset, ?int $length = null, mixed $replacement = []): array$array— المصفوفة الأصلية (تُمرر كمرجع، ستتغير).$offset— من أي فهرس نبدأ.$length— كم عدد العناصر المراد حذفها.$replacement