2015-02-27 6 views
0

У меня есть цикл внутри другого цикла while и внутри другого цикла while. Эхо по категориям и категориям по группам. Упрощенный пример кода ниже:Продолжить цикл внутри цикла

$a=0; 
while(2 > $a) { 
    echo "<div><h3>Group</h3>"; 
    $b=0; 
    while(5 > $b) { 
     echo "<label>Category</label>"; 
     echo "<select name='productID_".$b."'>"; 
     $c=0; 
     while(10 > $c) { 
      echo "<option>product</option>"; 
      $c++; 
     } 
     echo "</select><br/>"; 
     $b++; 
    } 
    echo "</div>"; 
    $a++; 
} 

Что мне нужно, что выбрать имя продолжается в другой группе и не начинается с 0 раз.
Например, теперь, если у меня есть 2 группы с 2 категориями продуктов, каждая из которых в первой группе будет выбирать имена productID_0 и productID_1, но и во второй группе. Мне нужно это во втором, чтобы продолжить с productID_2 и productID_3.

Как это сделать?

+0

Не переустанавливайте '$ b' на' 0' каждый раз через внешний цикл. – Barmar

+0

Я знаю, что проблема, но не знаю, как ее решить – jakob

ответ

1

Используйте другие переменную для номера в HTML, чем вы используете для управления с обратной связью:

$i = 0; 
for ($a = 0; $a < 2; $a++) { 
    echo "<div><h3>Group</h3>"; 
    for ($b = 0; $b < 5; $b++) { 
     echo "<label>Category</label>"; 
     echo "<select name='productID_".$i."'>"; 
     $i++; 
     for ($c = 0; $c < 10; $c++) { 
      echo "<option>product</option>"; 
     } 
     echo "</select><br/>"; 
    } 
    echo "</div>"; 
} 

BTW, for петлями являются более обычной идиомой зацикливания, как это, так как это позволяет видеть всю структуру в одном месте.

В качестве альтернативы вы можете использовать name='productID[]', а не давать им разные имена. Когда форма будет отправлена, $_POST['productID'] будет содержать массив всех значений.

+0

Я пробовал это, но тогда моя вторая группа не была эхом. – jakob

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