“Косяк” функции each()?

Функция each($array) пропускает первый элемент массива и после последнего ещё раз проходит "вхолостую". Массив создаётся автоматически с различными строковыми ключами.

Если $array ('title' => 'blabla', 'value' => 'blabla', 'sTitle' => 'blabla')

each($array)
echo ' !ключ: '.key($array);

Получим на выходе:

!ключ: value !ключ: sTitle !ключ:

В чём дело? Как правильно решить проблему?

2 ответа

foreach($array as $key=>$value){ echo ' !ключ: '.$key' !значение: '.$value;
}


Явно путаница между each и foreach.

Надо либо так:

while (list($key, $val) = each($array)) { echo "$key => $val\n";
}

Либо вон как @knes сказал. Но! функция key() не смещает указатель. Он смещен после первого «холостого» вызова each, соответственно, последний each уже вышел за пределы массива, и key возвращает пустое значение.

licensed under cc by-sa 3.0 with attribution.