Я пытаюсь понять кусок кода:
$array = array('koala', 'kangaroo', 'wombat', 'wallaby', 'emu', 'kiwi', 'kookaburra', 'platypus');
$object = new ArrayIterator($array);
foreach($object as $key=>$value)
{
if($object->offSetGet($key) === 'kiwi')
{
$object->offSetUnset($key);
}
echo $key.' - '.$value."<br />";
}
Я пытался понять, почему offSetUnset берет указатель на второй элемент массива, а не на первый. Моя теория представляет собой следующую последовательность событий:
Когда вызывается offSetUnset, указатель переходит к элементу 0, offSetUnset ждет, пока foreach запрашивает элемент, тогда offSetUnset знает, что может действовать, поэтому, когда это происходит, он удаляет элемент, указанный ранее, когда он заканчивает итерацию, он переходит к элементу. следующий элемент, и поэтому я думаю, что мы теряем элемент 0 после того, как offSetUnset сбросил цикл foreach.
Но, как я уже сказал, это всего лишь теория, которую я придумал, прежде чем спросить здесь, поэтому, если кто-нибудь может провести меня через последовательность событий, из-за которой мы потеряли 0-й элемент, всем спасибо и хорошего дня.