Preenchendo arrays multidimensionais com números em ordem no PHP
Nos exemplos anteriores, todos os números nos subarrays eram iguais. Vamos agora fazer com que os números aumentem, assim:
<?php
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
?>
Para isso, é necessário criar uma variável contadora especial,
que irá aumentar seu valor em
1 a cada iteração do loop
interno. Será esse valor do contador que
registraremos no array, assim:
<?php
$arr = [];
$k = 1; // contador
for ($i = 0; $i < 3; $i++) {
for ($j = 0; $j < 3; $j++) {
$arr[$i][$j] = $k; // registramos o contador
$k++; // aumentamos o contador
}
}
var_dump($arr);
?>
É possível reduzir o código, colocando a definição do contador
no primeiro loop, e o k++ - no segundo:
<?php
$arr = [];
for ($i = 0, $k = 1; $i < 3; $i++) {
for ($j = 0; $j < 3; $j++, $k++) {
$arr[$i][$j] = $k;
}
}
var_dump($arr);
?>
Também é possível fazer o aumento do contador após a atribuição:
<?php
$arr = [];
for ($i = 0, $k = 1; $i < 3; $i++) {
for ($j = 0; $j < 3; $j++) {
$arr[$i][$j] = $k++;
}
}
var_dump($arr);
?>
Preste atenção que, neste caso, deve ser
obrigatoriamente k++, e não ++k, pois a segunda opção
primeiro executará o aumento do contador, e só depois a gravação
no array (ou seja, como resultado, o array começará com o dois,
e não com o um).
Forme com a ajuda de dois loops aninhados o seguinte array:
<?php
[[1, 2], [3, 4], [5, 6], [7, 8]]
?>
Forme com a ajuda de dois loops aninhados o seguinte array:
<?php
[[2, 4, 6], [8, 10, 12], [14, 16, 18], [20, 22, 24]]
?>
Forme com a ajuda de três loops aninhados o seguinte array tridimensional:
<?php
[[[1, 2], [3, 4]], [[5, 6], [7, 8]]]
?>