Могу ли я сделать это (Loop in Loop)? - PullRequest
1 голос
/ 10 апреля 2011

Как я могу сделать что-то вроде этого:

for ($i = 1; $i <= $_SESSION['variable'] * $_SESSION['variable2']; $i++) {
    $listo[$i] = $preparado1[$i].
    for ($i = 1; $i <= $_SESSION['variable2']; $i++) {
        $preparadoex[$i];
    };
}

Но не работает, я думаю, что это:

for ($i = 1; $i <= $_SESSION['variable'] * $_SESSION['variable2']; $i++) {
    for ($i = 1; $i <= $_SESSION['variable2']; $i++) {
        $listo[$i] = $preparado1[$i].$preparadoex[$i];
    }
} 

Сценарий прост: у меня есть два класса, у первого есть 2 числа, а у двух - 3 числа, я должен "соединить" все числа (2) в первом классе со всеми числами второго класса:

F-S 1-1, 1-2, 1-3, 2-1, 2-2, 2-3

Спасибо

Ответы [ 3 ]

7 голосов
/ 10 апреля 2011

Вы переопределяете $i внутри второго цикла, что противоречит счетчику первого цикла.Используйте другую переменную, например $j:

for($i = 1;$i <=$_SESSION['variable'] * $_SESSION['variable2']; $i++ ){
    for($j = 1; $j <=$_SESSION['variable2']; $j++){
         $listo[] = $preparado1[$i] . $preparadoex[$j];
    }
} 
3 голосов
/ 10 апреля 2011

Вы можете иметь несколько вложенных циклов, а не только два. Единственное, что вы должны убедиться в том, что каждый из них использует уникальный счетчик циклов.

for($i = 1;$i <=$_SESSION['variable'] * $_SESSION['variable2']; $i++ ){
    for($j = 1; $j <=$_SESSION['variable2']; $j++){
         $listo[$i] = $preparado1[$i] . $preparadoex[$i];
    }
}

В вашем тестовом случае ваш второй для должен использовать другую переменную, такую ​​как $j.

3 голосов
/ 10 апреля 2011

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

for($i = 1;$i <=$_SESSION['variable'] * $_SESSION['variable2']; $i++ )
{
    for($j = 1; $j <=$_SESSION['variable2']; $j++) 
    {
         $listo[] = $preparado1[$i] . $preparadoex[$j];
    }
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...