2 차원 배열을 어떻게 확장합니까?
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;
이것은 사전 선언없이 모든 차원에 유효합니다.
첫째, PHP에는 다차원 배열이없고 배열이 있습니다.
둘째,이를 수행하는 함수를 사용할 수 있습니다.
function declare($m, $n, $value = 0) {
return array_fill(0, $m, array_fill(0, $n, $value));
}
간단한 "사용할 때 채우기"종류의 솔루션 :
$foo = array(array());
이렇게하면 $ foo [ n ] [ n ]을 저장할 수있는 유연한 의사 2 차원 배열을 얻을 수 있습니다 . 여기서 n <= ∞ (물론 일반적인 메모리 크기 제한에 의해 제한되지만 원하는 아이디어를 얻습니다). 이론적으로 이것은 필요한만큼의 서브 어레이를 생성하도록 확장 될 수 있습니다.
또는 모두 동일한 값을 갖는 더 큰 배열의 경우 :
$m_by_n_array = array_fill(0, $n, array_fill(0, $m, $value);
모든 것이로 설정된 $m
by $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()));
...기타...
나는 좌절감을 느낀다. 오류를 확인하거나 던지지 않고 사용할 깊이있는 배열의 초기화 된 배열을 쉽게 선언 할 수있는 방법이 있으면 좋을 것입니다.
$r = array("arr1","arr2");
단일 배열 요소를 에코하려면 다음과 같이 작성해야합니다.
echo $r[0];
echo $r[1];
출력은 다음과 같습니다. arr1 arr2
그리고 나에게 배열이 희소 해야하는지 여부에 대한 논쟁은 컨텍스트에 달려 있습니다.
예를 들어 $ a [6] [9]가 채워지지 않은 경우 $ a [6] [9]가 채워지는 것과 동일합니다 (예 : ""또는 0).
그리고 나는이 방식을 좋아합니다
$cars = array
(
array("Volvo",22),
array("BMW",15),
array("Saab",5),
array("Land Rover",17)
);
하나의 라이너를 사용하여 간단한 값에 대한 다차원 배열을 빠르게 생성하려면이 배열 라이브러리 를 사용하여 다음 과 같이하는 것이 좋습니다 .
$array = Arr::setNestedElement([], '1.2.3', 'value');
생산할
[
1 => [
2 => [
3 => 'value'
]
]
]
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
참고 URL : https://stackoverflow.com/questions/1811100/how-do-i-declare-a-two-dimensional-array
'IT' 카테고리의 다른 글
UITableViewCell이하고있는 것처럼 보이게 무엇을해야합니까? (0) | 2020.09.15 |
---|---|
scipy.misc 모듈에 imread 속성이 없습니까? (0) | 2020.09.15 |
모든 .dll을 무시하는 git 저장소 (0) | 2020.09.15 |
전체 HTML 요소를 덮도록 배경 이미지를 늘리려면 어떻게 처리합니까? (0) | 2020.09.15 |
Android : 선택기에서 된 된 버튼의 textColor가 표시되지 않습니까? (0) | 2020.09.15 |