是否可以使用foreach从数组的值自动递增?

时间:2011-08-02 16:05:49

标签: php arrays foreach

我有一个数组为每只动物设置一个数字。我想创建一个循环,无论多少动物都会自动递增

$animal = array(
    'dog' => 2,
    'cat' => 4,

    );
foreach($animal as $pet => $num) {
    echo(sprintf('this is %s number $s', $pet, $num));
    };

理想情况下,我希望它显示

这是狗1号

这是2号狗

这是第1号猫

这是第2号猫

这是第3号猫

这是第4号猫

5 个答案:

答案 0 :(得分:1)

你可以试试这个。

$animal = array(
    'dog' => 2,
    'cat' => 4,

    );
foreach($animal as $pet => $num) {
for($i=1;$i<=$num;$i++){
echo "this is $pet number $i";
}
};

答案 1 :(得分:1)

看起来你想要更像的东西:

foreach($animal as $pet => $count){
    for($i = 1; $i <= $count; $i++){
        printf('this is %s number %d', $pet, $i);
    }
}

答案 2 :(得分:1)

$animal = array(
'dog' => 2,
'cat' => 4,

);

foreach($animal as $pet => $num){
$i = 0;
while($num > 0)
{
    $i++;
    echo "This is $pet number $i<br/>";
    $num--;
}
}

答案 3 :(得分:1)

我认为不需要另一个嵌套的for循环,试试这个

    $animal = array(
      'dog' => 2,
      'cat' => 4,
    );

    $i = 1;
    foreach($animal as $pet => $num) {
      echo "this is $pet number $i";
      $i++;
    };

答案 4 :(得分:0)

这是什么意思?可能不是最优雅的解决方案,但它可以工作

$animal = array(
    'dog' => 2,
    'cat' => 4,

    );


foreach ($animal as $pet => $num):

    for ($i=1; $i <= $num; $i++):

        echo 'This is '.$pet.' number '.$i;

    endfor;

endforeach;