Можно ли использовать foreach для автоматического увеличения значения массива? - PullRequest
0 голосов
/ 02 августа 2011

У меня есть массив, который устанавливает число для каждого животного. Я хочу создать цикл, который будет автоматически увеличиваться для любого количества животных

$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 ]

1 голос
/ 02 августа 2011

Я не думаю, что есть необходимость в другом вложенном цикле, попробуйте это

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

    $i = 1;
    foreach($animal as $pet => $num) {
      echo "this is $pet number $i";
      $i++;
    };
1 голос
/ 02 августа 2011
$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--;
}
}
1 голос
/ 02 августа 2011

Вы можете попробовать это.

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

    );
foreach($animal as $pet => $num) {
for($i=1;$i<=$num;$i++){
echo "this is $pet number $i";
}
};
1 голос
/ 02 августа 2011

Похоже, вы хотите что-то похожее на:

foreach($animal as $pet => $count){
    for($i = 1; $i <= $count; $i++){
        printf('this is %s number %d', $pet, $i);
    }
}
0 голосов
/ 02 августа 2011

Это то, что вы имеете в виду? Вероятно, не самое элегантное решение, но оно работает

$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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...