Het vullen van multidimensionale arrays met opeenvolgende nummers in PHP
In de vorige voorbeelden waren alle nummers in de subarrays hetzelfde. Laten we het nu zo maken dat de nummers oplopen, zoals dit:
<?php
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
?>
Hiervoor is een speciale tellervariabele nodig,
die zijn waarde met
1 verhoogt bij elke iteratie van de innerlijke
lus. De waarde van deze teller zullen we
in de array schrijven, zoals dit:
<?php
$arr = [];
$k = 1; // teller
for ($i = 0; $i < 3; $i++) {
for ($j = 0; $j < 3; $j++) {
$arr[$i][$j] = $k; // schrijven de teller
$k++; // verhogen de teller
}
}
var_dump($arr);
?>
De code kan worden verminderd door de definitie van de teller
in de eerste lus te plaatsen, en k++ - in de tweede:
<?php
$arr = [];
for ($i = 0, $k = 1; $i < 3; $i++) {
for ($j = 0; $j < 3; $j++, $k++) {
$arr[$i][$j] = $k;
}
}
var_dump($arr);
?>
Het is ook mogelijk om de teller te verhogen na toewijzing:
<?php
$arr = [];
for ($i = 0, $k = 1; $i < 3; $i++) {
for ($j = 0; $j < 3; $j++) {
$arr[$i][$j] = $k++;
}
}
var_dump($arr);
?>
Let op dat in dit geval het
verplicht k++ moet zijn, en niet ++k, omdat de tweede optie
eerst de teller verhoogt en pas daarna schrijft
naar de array (wat betekent dat de array zal beginnen met twee,
en niet met één).
Vorm met behulp van twee geneste lussen de volgende array:
<?php
[[1, 2], [3, 4], [5, 6], [7, 8]]
?>
Vorm met behulp van twee geneste lussen de volgende array:
<?php
[[2, 4, 6], [8, 10, 12], [14, 16, 18], [20, 22, 24]]
?>
Vorm met behulp van drie geneste lussen de volgende driedimensionale array:
<?php
[[[1, 2], [3, 4]], [[5, 6], [7, 8]]]
?>