$xml = simplexml_load_file($xmlPath);
$items = $xml->list->item;
...
echo $items[$currentIndex]->asXML();
Когда я печатаю $ currentIndex на каждой итерации, я получаю 0, 1, 2, 3, 4 и т. Д.
Когда я жестко кодирую $ items [0] -> asXML (); $ пунктов [1] -> asXML (); $ пунктов [2] -> asXML (); и т. д. Я получаю нужные данные.
Но когда я зацикливаюсь, как в первом сегменте кода, он печатает элементы 0, 2, 4 и т. Д.
Как это возможно и что может быть причиной этого?
Спасибо,
Райан
ДОБАВЛЕННАЯ ИНФОРМАЦИЯ:
Это основная часть:
$totalItems = 45;
$keepItems = 10;
$currentIndex = 0;
while($totalItems > $keepItems)
{
$totalItems -= 1;
print_r($xml->list->item[$currentIndex]);
$currentIndex += 1;
}
Я только что попробовал это в отдельном файле, и он работал в этом случае:
$xml = simplexml_load_file($xmlPath);
$items = $xml->list->item;
$counter = 45;
$display = 0;
while($counter > 4)
{
echo $items[$display]->asXML();
$display += 1;
$counter -= 1;
}
Так что-то в моем другом коде делает это возможным. Мне нужно еще взглянуть на это, но в этом нет ничего очевидного.
Спасибо,
Райан
ДОБАВЛЕННАЯ ИНФОРМАЦИЯ 2:
ОК, я определила строку кода, которая вызывает синдром «каждый второй» :) 1066 *
unset($items[$currentIndex]);
Идея заключалась в том, чтобы удалить / сбросить элемент после того, как я использовал данные, но, похоже, он работает не так, как я ожидал - кто-нибудь знает, почему? Почему он сбрасывает то, что не отображал?
Спасибо,
Ryan