2013-05-01 1 views
-3

Когда я хочу перебирать массив я обычно делаю:цикл с назначением в PHP

foreach ($array as $a) 
{ 
    //do something with $a 
} 

Я просто хочу знать, если это возможно сделать что-то подобное с for цикла:

for ($i = 0; $i < count($array); $a = $array[$i]; $i ++) 
{ 
    //do something with $a 
} 

Редактировать: Когда я тестирую код выше, синтаксис for недействителен.

+1

Почему бы вам не попробовать и посмотреть, получаете ли вы те же результаты? –

+1

Почему? Не можете ли вы просто назначить '$ a' внутри цикла? – brbcoding

+1

@HunterMcMillen, obviouly Я пробовал код, и это не допустимое выражение. – manix

ответ

1

пропустить $ а = $ массив [$ я] часть для-петли (Назначается ВНУТРИ цикла, а не в объявлении цикла)

Вы должны сделать, как это вместо:

for ($i = 0; $i < count($array); $i ++) 
{ 
    $a = $array[$i]; //Gets value of element in array $array 
    //Do something with it... 
} 

Вы говорите, что хотите управлять элементом массива. Вы можете сделать equalivalent, делая, как это (добавление ключ-значение в Еогеасп петли)

foreach ($array as $key=>$i) 
{ 
    $a = $i[$key]; 
} 
+0

Ваш формат foreach очень хорошо! – manix

1

Замените точку запятой на запятую. Это не все решение (назначение выполняется слишком поздно), но он должен достаточно объяснить, как работает оператор for.

+0

Хорошо, теперь у меня есть эта тема более понятная: похоже, что 'for loop' принимает только' boolean' условия при объявлении – manix

+0

@manix - как это понимать? – bestprogrammerintheworld

+0

Хорошо, например, я думаю, что для цикла основан на этой концепции: 'for (| inicialization | | condition | | counter |)'. Таким образом, у меня не возникло проблем с добавлением дополнительных условий (возвращающих логические значения), например: 'for ($ i = 0; $ i manix

0
for ($i = 0; $i < count($array); $i ++){ 
    $a = $array[$i]; 
} 

для определения контура принимает три заявления, предоставленные вами четыре. Переместите назначение $ a в фактический цикл.

1

Цикл for не должен обрабатывать $a = $array[$i]; как часть его аргументов. Вы можете просто переместить его в тело петли, что-то вроде этого: for ($i = 0; $i < count($array); $i++){
$a = $array[$i]; //do something with $a }

Смежные вопросы