Điền số theo thứ tự vào mảng đa chiều trong PHP
Trong các ví dụ trước, tất cả các số trong các mảng con đều giống nhau. Bây giờ hãy làm sao để các số tăng dần, như thế này:
<?php
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
?>
Để làm điều này, cần tạo một biến bộ đếm đặc biệt,
sẽ tăng giá trị của nó lên
1 ở mỗi lần lặp của vòng lặp
bên trong. Giá trị của bộ đếm này chúng ta sẽ
ghi vào mảng, như thế này:
<?php
$arr = [];
$k = 1; // bộ đếm
for ($i = 0; $i < 3; $i++) {
for ($j = 0; $j < 3; $j++) {
$arr[$i][$j] = $k; // ghi bộ đếm
$k++; // tăng bộ đếm
}
}
var_dump($arr);
?>
Có thể rút ngắn mã, bằng cách đưa khai báo bộ đếm
vào vòng lặp đầu tiên, còn k++ - vào vòng lặp thứ hai:
<?php
$arr = [];
for ($i = 0, $k = 1; $i < 3; $i++) {
for ($j = 0; $j < 3; $j++, $k++) {
$arr[$i][$j] = $k;
}
}
var_dump($arr);
?>
Cũng có thể tăng bộ đếm sau phép gán:
<?php
$arr = [];
for ($i = 0, $k = 1; $i < 3; $i++) {
for ($j = 0; $j < 3; $j++) {
$arr[$i][$j] = $k++;
}
}
var_dump($arr);
?>
Chú ý rằng trong trường hợp này bắt buộc phải là
k++, chứ không phải ++k, vì phương án thứ hai
sẽ thực hiện tăng bộ đếm trước, rồi mới ghi
vào mảng (tức là kết quả mảng sẽ bắt đầu từ số hai,
chứ không phải từ số một).
Hãy tạo bằng hai vòng lặp lồng nhau mảng sau:
<?php
[[1, 2], [3, 4], [5, 6], [7, 8]]
?>
Hãy tạo bằng hai vòng lặp lồng nhau mảng sau:
<?php
[[2, 4, 6], [8, 10, 12], [14, 16, 18], [20, 22, 24]]
?>
Hãy tạo bằng ba vòng lặp lồng nhau mảng ba chiều sau:
<?php
[[[1, 2], [3, 4]], [[5, 6], [7, 8]]]
?>