2D 배열을 만드는 가장 쉬운 방법은 무엇입니까? 나는 이와 비슷한 것을 할 수 있기를 바랬습니다.
declare int d[0..m, 0..n]
답변:
또한 배열의 인덱스를 지정하여 연관 배열 또는 배열과 같은 "해시 테이블"을 생성 할 수 있습니다.
$array = array(
0 => array(
'name' => 'John Doe',
'email' => 'john@example.com'
),
1 => array(
'name' => 'Jane Doe',
'email' => 'jane@example.com'
),
);
다음과 같습니다.
$array = array();
$array[0] = array();
$array[0]['name'] = 'John Doe';
$array[0]['email'] = 'john@example.com';
$array[1] = array();
$array[1]['name'] = 'Jane Doe';
$array[1]['email'] = 'jane@example.com';
다음은 동등하며 결과적으로 2 차원 배열이됩니다.
$array = array(
array(0, 1, 2),
array(3, 4, 5),
);
또는
$array = array();
$array[] = array(0, 1, 2);
$array[] = array(3, 4, 5);
선언 만 하시겠습니까? 그럴 필요가 없습니다. 변수가 있는지 확인하십시오.
$d = array();
배열은 동적으로 크기가 조정되며 존재하지 않는 요소에 무엇이든 쓰려고 시도하면 생성됩니다 (필요한 경우 전체 배열 생성).
$d[1][2] = 3;
이는 사전 선언없이 모든 차원에 유효합니다.
count그래도 올바른 차원에서 사용할 수 있습니다 . 예를 들어 count($d[1])제가 귀하의 요점을 오해하지 않는 한.
첫째, PHP에는 다차원 배열이없고 배열 배열이 있습니다.
둘째,이를 수행하는 함수를 작성할 수 있습니다.
function declare($m, $n, $value = 0) {
return array_fill(0, $m, array_fill(0, $n, $value));
}
이 작업을 수행하는 PHP 함수가 내장되어 있지 않다는 것을 알고있는 한 루프 또는 @Amber의 답변에서 inidcated 된 array_fill과 같은 것을 재귀 적으로 호출하는 사용자 지정 메서드를 통해 수행해야합니다.
나는 당신이 비어 있지만 초기화 된 배열 배열을 만들었다 고 가정하고 있습니다. 예를 들어, 다음과 같은 3 개 배열 배열의 최종 결과를 원합니다 .
$final_array = array(array(), array(), array());
코드를 작성하는 것은 간단하지만 3 개 배열의 3 개 배열과 같은 임의의 크기 배열의 경우 사용하기 전에 초기화하는 것이 복잡해지기 시작합니다.
$final_array = array(array(array(), array(), array()), array(array(), array(), array()), array(array(), array(), array()));
...기타...
나는 좌절감을 느낀다. 오류를 확인하거나 던지지 않고 사용할 깊이있는 배열의 초기화 된 배열을 쉽게 선언 할 수있는 방법이 있으면 좋을 것입니다.
atli의 답변은 정말로 이것을 이해하는 데 도움이되었습니다. 다음은 2 차원 배열을 반복하는 방법의 예입니다. 이 샘플은 배열의 알려진 이름에 대한 값을 찾는 방법과 거기에서 찾은 모든 필드를 통과하는 foreach도 보여줍니다. 누군가에게 도움이되기를 바랍니다.
$array = array(
0 => array(
'name' => 'John Doe',
'email' => 'john@example.com'
),
1 => array(
'name' => 'Jane Doe',
'email' => 'jane@example.com'
),
);
foreach ( $array as $groupid => $fields) {
echo "hi element ". $groupid . "\n";
echo ". name is ". $fields['name'] . "\n";
echo ". email is ". $fields['email'] . "\n";
$i = 0;
foreach ($fields as $field) {
echo ". field $i is ".$field . "\n";
$i++;
}
}
출력 :
hi element 0
. name is John Doe
. email is john@example.com
. field 0 is John Doe
. field 1 is john@example.com
hi element 1
. name is Jane Doe
. email is jane@example.com
. field 0 is Jane Doe
. field 1 is jane@example.com
그리고 나에게 배열이 희소 해야하는지 여부에 대한 논쟁은 컨텍스트에 달려 있습니다.
예를 들어 $ a [6] [9]가 채워지지 않은 경우 $ a [6] [9]가 채워지는 것과 동일합니다 (예 : ""또는 0).
$r = array("arr1","arr2");
단일 배열 요소를 에코하려면 다음과 같이 작성해야합니다.
echo $r[0];
echo $r[1];
출력은 다음과 같습니다. arr1 arr2