我有两个foreach,一个在另一个里面。
在第二个中,我试图增加一个变量..但它正在每个循环中被重置......
检查出来......
$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
出了什么问题?
答案 0 :(得分: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
变量。
只需将该变量移出第一个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
}
}
答案 1 :(得分:1)
只需在foreach循环之外初始化$ i2变量即可。
像这样:
$i2 = 0;
foreach(){
foreach(){
$i2++;
}
}
答案 2 :(得分:0)
你有没有理由在每个循环中使用第二个?如果您尝试使用第二个循环所做的只是增加一些数字,那么它可能应该是一个for循环,其中每个内部都有一个,如此处所示for each loop inside of for loop