Fyller flerdimensionella arrayer med tal i ordning i PHP
I de tidigare exemplen var alla tal i underarrayerna desamma. Låt oss nu göra så att talen ökar, så här:
<?php
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
?>
För att göra detta behöver du skapa en speciell räknarvariabel,
som ökar sitt värde med
1 vid varje iteration av den inre
loopen. Det är detta räknarvärde som vi kommer att
skriva in i arrayen, så här:
<?php
$arr = [];
$k = 1; // räknare
for ($i = 0; $i < 3; $i++) {
for ($j = 0; $j < 3; $j++) {
$arr[$i][$j] = $k; // skriver räknaren
$k++; // ökar räknaren
}
}
var_dump($arr);
?>
Du kan minska koden genom att flytta definitionen av räknaren
till den första loopen, och k++ - till den andra:
<?php
$arr = [];
for ($i = 0, $k = 1; $i < 3; $i++) {
for ($j = 0; $j < 3; $j++, $k++) {
$arr[$i][$j] = $k;
}
}
var_dump($arr);
?>
Du kan också göra ökningen av räknaren efter tilldelningen:
<?php
$arr = [];
for ($i = 0, $k = 1; $i < 3; $i++) {
for ($j = 0; $j < 3; $j++) {
$arr[$i][$j] = $k++;
}
}
var_dump($arr);
?>
Observera att i det här fallet måste det vara
absolut k++, och inte ++k, eftersom det andra alternativet
först kommer att öka räknaren och sedan skriva
till arrayen (det vill säga, som ett resultat kommer arrayen att börja med tvåan,
och inte med ettan).
Skapa med hjälp av två kapslade loopar följande array:
<?php
[[1, 2], [3, 4], [5, 6], [7, 8]]
?>
Skapa med hjälp av två kapslade loopar följande array:
<?php
[[2, 4, 6], [8, 10, 12], [14, 16, 18], [20, 22, 24]]
?>
Skapa med hjälp av tre kapslade loopar följande tredimensionella array:
<?php
[[[1, 2], [3, 4]], [[5, 6], [7, 8]]]
?>