Menu
flag Ar iconالعربيةdown icon

الدالة array_slice() في PHP: أخذ جزء من مصفوفة

تعيد array_slice($array, $offset, $length) نسخة من جزء من مصفوفة دون تغيير الأصل. تعلّم الإزاحات السالبة لآخر العناصر، وpreserve_keys، وتقسيم قائمة إلى صفحات، وكيف تختلف عن array_splice.

تحتوي هذه الصفحة على محررات قابلة للتشغيل - حرّر، شغّل، وشاهد النتيجة فوراً.

تعيد array_slice($array, $offset, $length) مصفوفة جديدة فيها $length من العناصر بدءًا من الموضع $offset. ولا تتغير المصفوفة الأصلية. احذف $length لتأخذ كل شيء حتى النهاية.

الإزاحة موضع (0 هو العنصر الأول)، لا مفتاح. وهذا مهم للمصفوفات الترابطية وللمصفوفات التي ليست مفاتيحها 0, 1, 2.

الحصول على آخر N عنصر بإزاحة سالبة

الإزاحة السالبة تُعدّ من النهاية: -1 هو العنصر الأخير، و-3 تبدأ من الثالث قبل النهاية. والطول السالب يتوقف قبل النهاية بذلك العدد من العناصر.

طلب عناصر أكثر مما يوجد لا مشكلة فيه: تعيد array_slice($log, 0, 100) العناصر الخمسة كلها.

الاحتفاظ بالمفاتيح الأصلية بـ preserve_keys

يُعاد ترقيم المفاتيح الصحيحة من 0 ما لم تمرر true وسيطًا رابعًا. أما المفاتيح النصية فتُحفظ دائمًا.

استخدم true عندما يكون للمفاتيح معنى، مثل معرّفات قاعدة البيانات، وستبحث عن العناصر بها لاحقًا.

تقسيم مصفوفة إلى صفحات بـ array_slice

عرض الصفحة $page من قائمة فيها $perPage عنصرًا في كل صفحة هو اقتطاع واحد: الإزاحة هي ($page - 1) * $perPage. يطبع هذا المثال قائمة HTML مع روابط للصفحات. شغّله وانقر على رقم صفحة: يعمل السكربت نفسه مرة أخرى مع ضبط $_GET['page'] من الرابط.

يُبقي السطر max(1, min($pages, ...)) قيمة مكتوبة يدويًا مثل ?page=99 أو ?page=-1 ضمن النطاق الصحيح. مع قاعدة بيانات ستطلب صفحة واحدة فقط بـ LIMIT وOFFSET بدل تحميل كل الصفوف، لكن لقائمة موجودة في الذاكرة أصلًا، تؤدي array_slice المهمة كلها.

array_slice مقابل array_splice

يختلف الاسمان بحرف واحد ويفعلان بالأصل شيئين متعاكسين. تنسخ array_slice جزءًا إلى الخارج. وتقتطع array_splice الجزء من المصفوفة التي تمررها، وتعيد ترقيمها، وتعيد العناصر المحذوفة. وتستطيع أيضًا إدراج بدائل مكان القطع.

array_slicearray_splice
تغيّر الأصللانعم (بالمرجع)
تعيدالجزء المحددالجزء المحذوف
تستطيع إدراج عناصرلانعم، الوسيط الرابع
المفاتيح الصحيحةيُعاد ترقيمها ما لم تُستخدم preserve_keysيُعاد ترقيمها

لطرق أخرى لحذف العناصر، راجع حذف العناصر من مصفوفة.

تقسيم مصفوفة إلى أجزاء

عندما تحتاج إلى كل الصفحات معًا، مثلًا لعرض المنتجات في صفوف من ثلاثة، تقوم array_chunk بالاقتطاع المتكرر نيابة عنك.

غيّر 3 إلى 2 أو 4 وشغّله مرة أخرى. ويحمل الجزء الأخير ما تبقى.

الأسئلة الشائعة

كيف أحصل على أول N عنصر من مصفوفة في PHP؟

تعيد array_slice($arr, 0, 3) أول ثلاثة عناصر. وإذا كان في المصفوفة أقل من ثلاثة، تحصل عليها كلها دون خطأ.

كيف أحصل على آخر N عنصر من مصفوفة؟

استخدم إزاحة سالبة: تعيد array_slice($arr, -3) آخر ثلاثة عناصر. وحذف الطول يعني "حتى النهاية".

ماذا يفعل preserve_keys في array_slice؟

افتراضيًا تعيد array_slice ترقيم المفاتيح الصحيحة من 0. مرّر true وسيطًا رابعًا، array_slice($arr, 2, 3, true)، لتحتفظ بالمفاتيح الصحيحة الأصلية. أما المفاتيح النصية فتُحفظ دائمًا، معه أو دونه.

ما الفرق بين array_slice وarray_splice؟

تعيد array_slice نسخة من جزء من المصفوفة وتترك الأصل كما هو. وتأخذ array_splice المصفوفة بالمرجع، فتحذف ذلك الجزء منها (وتُدرج بدائل اختياريًا) وتعيد ما حذفته.

رسم توضيحي للغات البرمجة في Coddy

تعلّم البرمجة مع Coddy

ابدأ الآن