Naplňování vícerozměrných polí čísly postupně v PHP
V předchozích příkladech byla všechna čísla v podpolích stejná. Nyní udělejme to, aby čísla narůstala, takto:
<?php
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
?>
K tomu je třeba vytvořit speciální proměnnou-čítač,
která bude zvyšovat svou hodnotu o
1 při každé iteraci vnitřní
smčky. Hodnotu tohoto čítače budeme
zapisovat do pole, takto:
<?php
$arr = [];
$k = 1; // čítač
for ($i = 0; $i < 3; $i++) {
for ($j = 0; $j < 3; $j++) {
$arr[$i][$j] = $k; // zapisujeme čítač
$k++; // zvyšujeme čítač
}
}
var_dump($arr);
?>
Lze kód zmenšit tím, že definici čítače
umístíme do prvního cyklu a k++ - do druhého:
<?php
$arr = [];
for ($i = 0, $k = 1; $i < 3; $i++) {
for ($j = 0; $j < 3; $j++, $k++) {
$arr[$i][$j] = $k;
}
}
var_dump($arr);
?>
Lze také provést zvýšení čítače po přiřazení:
<?php
$arr = [];
for ($i = 0, $k = 1; $i < 3; $i++) {
for ($j = 0; $j < 3; $j++) {
$arr[$i][$j] = $k++;
}
}
var_dump($arr);
?>
Všimněte si, že v tomto případě musí být
nezbytně k++, a ne ++k, protože druhá varianta
nejprve provede zvýšení čítače a teprve potom zápis
do pole (tj. ve výsledku bude pole začínat dvojkou,
a ne jedničkou).
Pomocí dvou vnořených cyklů vytvořte následující pole:
<?php
[[1, 2], [3, 4], [5, 6], [7, 8]]
?>
Pomocí dvou vnořených cyklů vytvořte následující pole:
<?php
[[2, 4, 6], [8, 10, 12], [14, 16, 18], [20, 22, 24]]
?>
Pomocí tří vnořených cyklů vytvořte následující trojrozměrné pole:
<?php
[[[1, 2], [3, 4]], [[5, 6], [7, 8]]]
?>