У меня есть 2 foreachs, один внутри другого.
Во втором я пытаюсь увеличить переменную.. Но она сбрасывается в каждом цикле...
Проверьте это...
$i2 = 0;
foreach($result as $line) {
echo "Foreach begins. i2 =".$i2; // Foreach begins. i2 = 0
$i2++;
echo "i2 incremented. i2 =".$i2; // i2 incremented. i2 = 1
}
Но результат цикла показывает мне этот текст:
Foreach begins. i2 = 0
i2 incremented. i2 = 1
Foreach begins. i2 = 0
i2 incremented. i2 = 1
Я пытаюсь получить:
Foreach begins. i2 = 0
i2 incremented. i2 = 1
Foreach begins. i2 = 1
i2 incremented. i2 = 2
Что не так?
Я предполагаю, что у вас есть эта петля внутри другой, которая выглядит так:
foreach($thing as $result) {
$i2 = 0;
foreach($result as $line) {
echo "Foreach begins. i2 =".$i2; // Foreach begins. i2 = 0
$i2++;
echo "i2 incremented. i2 =".$i2; // i2 incremented. i2 = 1
}
}
Ваша проблема в том, что в каждом цикле исходного (первого) foreach()
вы $i2
переменную $i2
.
Просто переместите эту переменную из первой области foreach()
и она должна работать:
$i2 = 0;
foreach($thing as $result) {
foreach($result as $line) {
echo "Foreach begins. i2 =".$i2; // Foreach begins. i2 = 0
$i2++;
echo "i2 incremented. i2 =".$i2; // i2 incremented. i2 = 1
}
}
Просто инициализируйте переменную $ i2 вне цикла foreach и это.
Как это:
$i2 = 0;
foreach(){
foreach(){
$i2++;
}
}
Есть ли причина, по которой вы используете вторую для каждого цикла? Если все, что вы пытаетесь сделать со вторым циклом, состоит в том, чтобы увеличивать некоторые числа, возможно, это должен быть цикл for с a для каждого внутри него, как указано здесь для каждого цикла внутри цикла for