2010-03-06 7 views
0

Как написать это таким образом, чтобы значение $ counter равно 1 на его первой итерации и 0 на каждый следующий цикл?Предельное значение счетчика после цикла первого цикла

$counter =1; 

foreach($result): 

$number = $result['value'] + $counter; 

db->update($result['value'] => $number); 

$counter--; 

endforeach; 

По существу моя цель состоит в том, чтобы получить $ число составит $ номер + 1 на первом круге, а затем $ номер + 0 для каждого следующего цикла.

Значение $ result ['value'] будет установлено после первого цикла до $ number + 1, поэтому в следующем цикле $ result ['value'] будет необходимым неизменным значением.

ответ

3

Я не вижу, где проблема.

$counter = 1; 
foreach($result): 
    $number = $result['value'] + $counter; 
    // Once you have used your variable, just set it to zero... 
    $counter = 0; 
    db->update($result['value'] => $number); 
endforeach; 
+0

Блестящий! Проблема была явно я, более усложняя самые основные идеи. Большое вам спасибо за то, что вы дали мне новую и очевидную перспективу. – sterling

2

Почему бы просто не использовать что-то вроде этого:

  • тест, если $counter является 1
  • да, установите его в 0
  • еще ничего не делать

Который даст вам некоторый код, который будет выглядеть так:

$counter = 1; 
foreach($result): 
    $number = $result['value'] + $counter; 
    db->update($result['value'] => $number); 
    if ($counter == 1) { 
     $counter = 0; 
    } 
endforeach; 


Или, вы также можете просто установить $counter к 0 в конце цикла, ничего не испытывая:

$counter = 1; 
foreach($result): 
    $number = $result['value'] + $counter; 
    db->update($result['value'] => $number); 
    $counter = 0; 
endforeach; 

С этим:

  • Первый раз, когда вы в петля, $counter будет 1, как инициализировано до петли
  • В конце первой итерации оно будет установлено в 0
  • И после этого он будет повторно установлен на 0 после каждой итерации - то есть он останется на 0.
+0

Да, ваш второй пример - именно то, что я пытался выполнить. Это явный случай работы в течение нескольких дней подряд, а не перерыв. Спасибо за помощь. – sterling

+0

Добро пожаловать :-) Удачи! –

0

код выглядит как PHP, хотя он не является синтаксически действительным. Я буду считать итерированным переменным (здесь под названием $results) имеют цифровые клавиши, начиная с 0:

foreach($results as $counter => $result): 
    $number = $result['value'] + !$counter; 

уведомления отрицания.

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