Редактировать: вероятно, стоит отметить, что each
устарела
Предупреждение: эта функция устарела с версии PHP 7.2.0. Полагаться на эту функцию крайне не рекомендуется
давайте сначала посмотрим на each()
: он возвращает текущее значение (сначала это $array[0 | "first value in association array ]
. Поэтому
$prices = ('x'=>100 , 'y'=>200 , 'z'= 300 );
скажем, я хочу перебрать эти массивы без использования цикла foreach.
while( $e = each($prices) ){
echo $e[key] . " " . $e[value] . "<br/>" ;
}
когда каждый достигает точки на несуществующем элементе, который может вызвать
цикл while для завершения.
Когда вы вызываете each()
, он дает вам массив с четырьмя значениями и четырьмя индексами для местоположений массива. Положения 'key' и 0 содержат ключ текущего элемента, а местоположения 'value' и 1 содержат
значение текущего элемента.
так что этот цикл будет перечислять каждый ключ массива пробел и значение затем
во-вторых, давайте посмотрим на list()
.
в основном он будет делать то же самое с переименованием «value» и «key», хотя его следует использовать вместе с each()
while( list($k , $v ) = each($prices) ){
echo $k /*$e[key]*/ . " " . $v /*$e[value]*/ . "<br/>" ;
}
Итак, в двух словах each()
перебирает массив каждый раз, возвращая массив. list()
переименовывает значение пары ключей массива, который будет использоваться внутри цикла.
УВЕДОМЛЕНИЕ: reset($prices)
:
сбрасывает указатель each()
для этого массива в качестве первого элемента.