2012-01-15 4 views
-1

Я использую следующий цикл для перемещения массива, где мне нужно и значение, и поле ключа.PHP-траверс с нулевыми значениями

while ($value = current($a)) { 

echo "$value ".key($a).'<br />'; 
next($a); 
} 

Проблема заключается в том, что обход имеет место только до «0» встречаются в массиве, как и says.Is заявления в то время какие-либо образом я могу пройти массив с нулевыми значениями (размер массива изменяется) и получите как значение, так и ключ.

+2

Используйте 'foreach' вместо: http://php.net/manual/en/control-structures.foreach .php (что является более популярным способом перемещения массивов, чем цикл while). –

+0

с foreach я не могу получить ключевые значения – deXter

+0

Конечно, вы есть. Вы посмотрели документацию? –

ответ

2

просто использовать foreach -loop:

foreach($a as $key => $value) { 

    echo "$value $key <br />"; 

} 

это намного проще и звучит так же, как то, что вы ищете.

3

Использование key вместо current для обхвата состояния и сравните его значение null:

key() функция просто возвращает ключ элемента массива, который в данный момент, на который указывает внутренний указатель. Он не перемещает указатель. Если внутренний указатель указывает на конец списка элементов или массив пуст, key() возвращает NULL.

while (($key = key($a)) !== null) { 
    $value = value($a); 
    echo "$value $key<br />"; 
    next($a); 
} 

Но гораздо более удобным способом было бы использовать вместо foreach:

foreach ($a as $key => $value) { 
    echo "$value $key<br />"; 
} 
Смежные вопросы