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
我该如何解决?
答案 0 :(得分:3)
我认为你正在尝试:
$i = 0;
foreach($tests as $key => $test){
if ($test->getNumber() == 2) {
echo ++$i . $getName() ;
}
}
答案 1 :(得分:2)
因为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语句重写每个iteartion。
试试这个(使用另一个计数器):
$j = 0;
foreach($tests as $i => $test){
if ($test->getNumber() == 2) {
$j++;
echo $j . $getName() ;
}
}
答案 2 :(得分:1)
$i--
中没有任何意义,因为它在循环中被覆盖。
$counter = 0;
foreach($tests as $i => $test){
if ($test->getNumber() == 2) {
++$counter;
echo $counter . $getName() ;
}
}
答案 3 :(得分:0)
问题是您要从数组中打印数字,而不是创建新的编号。
未经测试但应该可以使用。
foreach($tests as $i => $test){
$num = '0';
if ($test->getNumber() == 2) {
echo $num . $getName() ;
$num++;
} else {
$i--;
}
}