الحذف باستخدام 'array_shift'
جزء من قسم Logic & Flow في رحلة PHP على Coddy — الدرس 13 من 68.
تقوم الدالة array_shift() بإزالة العنصر الأول من المصفوفة وتُعيد تلك القيمة المحذوفة. وهذا هو عكس الدالة array_unshift()، التي تضيف عناصر إلى بداية المصفوفة.
إليك كيفية عمل ذلك:
<?php
$queue = ["Alice", "Bob", "Charlie"];
$firstPerson = array_shift($queue);
echo $firstPerson; // المخرجات: Alice
print_r($queue); // المخرجات: Array ( [0] => Bob [1] => Charlie )
?>لاحظ أن array_shift() تقوم بتعديل المصفوفة الأصلية وإرجاع العنصر الذي تمت إزالته معاً. بعد إزالة العنصر الأول، تنتقل جميع العناصر المتبقية تلقائياً للأسفل لملء الفجوة—ينتقل "Bob" من الفهرس 1 إلى الفهرس 0، وينتقل "Charlie" من الفهرس 2 إلى الفهرس 1.
تحدث عملية إعادة الفهرسة هذه تلقائياً، مما يضمن احتفاظ مصفوفتك بتسلسل رقمي صحيح. إذا استخدمت array_shift() على مصفوفة فارغة، فإنها تعيد null دون التسبب في خطأ.
هذه الوظيفة مفيدة بشكل خاص لتنفيذ الطوابير (queues)، حيث تقوم بمعالجة العناصر بترتيب "الأول دخولاً، الأول خروجاً" (first in, first out) — مثل التعامل مع العملاء في طابور أو معالجة المهام بالترتيب الذي تم استلامها به.
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
التحدي
سهلستتلقى مدخلين: مصفوفة أولية للعملاء الذين ينتظرون في الطابور بتنسيق JSON ورقم يشير إلى عدد العملاء الذين سيتم خدمتهم. اقرأ كلا المدخلين، وقم بتحويل سلسلة JSON إلى مصفوفة، واستخدم array_shift() لعدد المرات المحدد لإزالة العملاء الذين تمت خدمتهم من مقدمة الطابور، واطبع المصفوفة النهائية باستخدام print_r().
تنسيق الإدخال: سطران - السطر الأول يحتوي على مصفوفة JSON (مثال: ["Alice","Bob","Charlie","Diana"])، والسطر الثاني يحتوي على عدد العملاء الذين سيتم خدمتهم (رقم)
المخرجات المتوقعة: المصفوفة بعد إزالة العملاء الذين تمت خدمتهم من المقدمة، معروضة باستخدام print_r()
ورقة مرجعية
تقوم الدالة array_shift() بإزالة العنصر الأول من المصفوفة وإرجاع تلك القيمة المحذوفة:
<?php
$queue = ["Alice", "Bob", "Charlie"];
$firstPerson = array_shift($queue);
echo $firstPerson; // المخرجات: Alice
print_r($queue); // المخرجات: Array ( [0] => Bob [1] => Charlie )
?>نقاط رئيسية:
- تعدل المصفوفة الأصلية وتعيد العنصر المحذوف
- تتم إعادة فهرسة العناصر المتبقية تلقائياً (تزاح للأسفل)
- تعيد
nullإذا تم استخدامها على مصفوفة فارغة - مفيدة لتنفيذ طوابير "الداخل أولاً، يخرج أولاً" (FIFO)
جرّب بنفسك
<?php
// قراءة مصفوفة JSON للعملاء
$jsonInput = fgets(STDIN);
$customers = (array)json_decode($jsonInput, true);
// قراءة عدد العملاء المطلوب خدمتهم
$numToServe = intval(fgets(STDIN));
// TODO: اكتب الكود الخاص بك أدناه
// استخدم array_shift() لإزالة العملاء من مقدمة الطابور
// طباعة المصفوفة النهائية
print_r($customers);
?>يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس Logic & Flow
1الدوال المتقدمة
الدوال المجهولةالـ Closures وكلمة 'use'دوال السهمدوال الـ Callbackاستخدام 'call_user_func'دوال المتغيراتالتمرير بالمرجعالدوال العوديةمراجعة: مزيج الدوال4المصفوفات متعددة الأبعاد
إنشاء مصفوفة ثنائية الأبعادالوصول إلى عناصر المصفوفة ثنائية الأبعادتعديل عناصر المصفوفة ثنائية الأبعادالتكرار باستخدام الحلقات المتداخلةالمصفوفات الترابطية ثنائية الأبعادمراجعة: تمرين الشبكة البسيطة2معالجة المصفوفات المتقدمة
الإضافة باستخدام 'array_push'الحذف باستخدام 'array_pop'الإضافة باستخدام 'array_unshift'الحذف باستخدام 'array_shift'دمج المصفوفات المفهرسةدمج المصفوفات الترابطيةالاستخراج باستخدام 'array_slice'القيم باستخدام 'in_array'المفاتيح باستخدام 'array_search'مراجعة: تمرين قائمة التشغيل3ترتيب المصفوفات
ترتيب المصفوفات المفهرسة تصاعدياًترتيب المصفوفات المفهرسة تنازلياًترتيب المصفوفات الترابطية حسب القيمةترتيب المصفوفات الترابطية حسب المفتاحالترتيب بالترتيب الطبيعيالترتيب المخصص باستخدام 'usort'مراجعة: ترتيب لوحة المتصدرين