شرح صفوف ومحتوى الفقرة
على عكس unset()، تقوم كل من array_shift() وarray_unshift() بإعادة ترقيم جميع المفاتيح الرقمية تلقائياً لتبدأ من 0 مع إبقاء المفاتيح النصية كما هي.
- إذا كانت المصفوفة تستخدم معرفات رقمية كمفاتيح (مثل
[104 => "Laptop", 209 => "Mouse"])، فإن استدعاءarray_shift()يمسح تلك المعرفات ويعيد ترقيم الباقي إلى0, 1, .... - تتطلب إعادة الترقيم تحديث جميع العناصر بزمن O(n)، مما يجعل تكرار
array_shift()بطيئاً مع المصفوفات الضخمة. - لحذف العنصر الأول دون المساس بالمفاتيح الرقمية، استخرج المفتاح الأول بـ
array_key_first($arr)ثم احذفه بـunset().
أعادت array_shift() ترقيم المفتاح الرقمي 208 ليصبح 0 وأبقت المفتاح النصي "vip"، بينما حافظت unset() مع array_key_first() على المفتاح 208.
PHP
<?php
$tickets = [104 => "Login Bug", 208 => "CSS Glitch", "vip" => "Outage"];
array_shift($tickets);
print_r($tickets);
$safe = [104 => "Login Bug", 208 => "CSS Glitch"];
unset($safe[array_key_first($safe)]);
echo "Preserved key: " . array_key_first($safe) . "\n";