2012-02-20 3 views
0

Я работаю над веб-сайтом, на котором строятся строки в зависимости от количества пользователей. В этом примере у меня три пользователя. В принципе, я передаю данные через $ _POST, используя выпадающие данные выбора. Вот что я перехожу к PHP. Они завернуты в <form>, но я очистил его, чтобы показать только важные данные.Нарушение цикла foreach

... 
<select name="taction[3]" > 
<option value="accept">Accept</option> 
<select name="taction[4]" > 
<option value="accept">Accept</option> 
<select name="taction[6]" > 
<option value="accept">Accept</option> 
... 

Мой PHP выглядит следующим образом:

$total = 1; 
foreach ($_POST['taction'] as $userid => $action) 
{ 
    if ($action == "accept") 
    { 
     if ($total<1) 
     { 
      break; 
     } 
     else 
     { 
      echo $userid."foo"; 
      $total = ($total - 1); 
     } 
    } 
} 

По какой-то причине, он по-прежнему отображать три «Foo-х», когда он должен был остановлен после первого «Foo». Что я делаю не так?

+0

Возможно, вы выполняете весь блок кода (в том числе ведущий '$ total = 1' три раза? – KingCrunch

+0

одна вещь, которую я сразу заметил в вашем коде = = должен быть> = для" больше или равно ", а не, равный или больший, чем « – JimmyBanks

+0

Джимми, что => для цикла foreach, а не для проверки большего/равного, чем – BenOfTheNorth

ответ

0

Спасибо за ваши предложения. Я был виноват, полагаясь на переменные вне инструкции foreach. Мне пришлось снова скопировать операции внутри цикла, чтобы он регистрировал добавленные данные.

0

Изменить его

if($total <= 1) 

Или начать общую переменную $ в 0.

+0

, то он не получит никакого вывода, потому что цикл foreach будет разбиваться на первый раунд еще до печати любого пользователя. – Basti