[英]iteration in foreach [closed]
foreach($tests as $i => $test){
if ($test->getNumber() == 2) {
echo $i . $getName() ;
} else {
$i--;
}
}
例如:
number | name
1 | aaa
2 | bbb
1 | ccc
2 | vvv
2 | ccc
给我看看:
$i $name
2 bbb
4 vvv
5 ccc
代替:
$i $name
1 bbb
2 vvv
3 ccc
我该如何解决?
我认为您正在尝试这样做:
$i = 0;
foreach($tests as $key => $test){
if ($test->getNumber() == 2) {
echo ++$i . $getName() ;
}
}
因为foreach会在$ tests数组中返回$ test的索引,所以您的$ tests数组为:
$tests[0] => 1 aaa
$tests[1] => 2 bbb
$tests[2] => 1 ccc
$tests[3] => 2 vvv
$tests[4] => 2 ccc
$ i通过foreach语句重写每个迭代。
试试看(使用另一个计数器):
$j = 0;
foreach($tests as $i => $test){
if ($test->getNumber() == 2) {
$j++;
echo $j . $getName() ;
}
}
$i--
没有意义-因为它在循环中被覆盖。
$counter = 0;
foreach($tests as $i => $test){
if ($test->getNumber() == 2) {
++$counter;
echo $counter . $getName() ;
}
}
问题是您要从数组中打印数字,而不是创建新的编号。
未经测试,但应该可以。
foreach($tests as $i => $test){
$num = '0';
if ($test->getNumber() == 2) {
echo $num . $getName() ;
$num++;
} else {
$i--;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.