PHP에서 다차원 배열을 순서대로 숫자로 채우기
이전 예제에서 하위 배열의 모든 숫자들은 동일했습니다. 이제 숫자가 증가하도록 만들어 보겠습니다. 다음과 같이 말이죠:
<?php
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
?>
이를 위해서는 특별한 카운터 변수를 만들어야 합니다.
이 변수는 내부 루프가 반복될 때마다 값이
1씩 증가합니다. 우리는 이 카운터의 값을
배열에 기록할 것입니다. 다음과 같이 말이죠:
<?php
$arr = [];
$k = 1; // 카운터
for ($i = 0; $i < 3; $i++) {
for ($j = 0; $j < 3; $j++) {
$arr[$i][$j] = $k; // 카운터 기록
$k++; // 카운터 증가
}
}
var_dump($arr);
?>
코드를 줄일 수 있습니다. 카운터 정의를 첫 번째 루프로 옮기고,
k++를 두 번째 루프로 옮기는 것이죠:
<?php
$arr = [];
for ($i = 0, $k = 1; $i < 3; $i++) {
for ($j = 0; $j < 3; $j++, $k++) {
$arr[$i][$j] = $k;
}
}
var_dump($arr);
?>
할당 후에 카운터를 증가시키도록 할 수도 있습니다:
<?php
$arr = [];
for ($i = 0, $k = 1; $i < 3; $i++) {
for ($j = 0; $j < 3; $j++) {
$arr[$i][$j] = $k++;
}
}
var_dump($arr);
?>
이 경우 반드시 k++여야 하고, ++k가 아니어야 한다는 점에 유의하세요.
두 번째 옵션은 먼저 카운터를 증가시킨 후에 배열에 기록하기 때문입니다
(결과적으로 배열은 1이 아닌 2부터 시작하게 됩니다).
두 개의 중첩 루프를 사용하여 다음 배열을 생성하세요:
<?php
[[1, 2], [3, 4], [5, 6], [7, 8]]
?>
두 개의 중첩 루프를 사용하여 다음 배열을 생성하세요:
<?php
[[2, 4, 6], [8, 10, 12], [14, 16, 18], [20, 22, 24]]
?>
세 개의 중첩 루프를 사용하여 다음 3차원 배열을 생성하세요:
<?php
[[[1, 2], [3, 4]], [[5, 6], [7, 8]]]
?>