programing

2차원 배열을 선언하려면 어떻게 해야 합니까?

firstcheck 2022. 10. 29. 14:32
반응형

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타고$n모든 것을 세팅한 배열$value.

아틀리의 답변은 제가 이것을 이해하는 데 큰 도움이 되었습니다.여기 2차원 배열에서 반복하는 방법의 예가 있습니다.다음 예제에서는 어레이의 기존 이름 값을 찾는 방법과 검색된 모든 필드를 살펴보는 방법을 보여 줍니다.도움이 됐으면 좋겠어요.

$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

이를 위한 내장 php 함수는 없는 것으로 알고 있는 한 루프 또는 @Amber가 응답한 array_fill inidcated와 같은 것을 반복적으로 호출하는 커스텀 메서드를 통해 실행해야 합니다.

빈 어레이를 초기화한 어레이를 작성한 것을 의미한다고 생각합니다.예를 들어 다음과 같은 3개의 어레이 배열의 최종 결과를 얻을 수 있습니다.

   $final_array = array(array(), array(), array());

이것은 수작업으로 간단하게 코드화할 수 있지만, 3개의 어레이로 구성된 어레이와 같은 임의의 크기의 어레이에서는 사용하기 전에 초기화가 복잡해집니다.

     $final_array = array(array(array(), array(), array()), array(array(), array(), array()), array(array(), array(), array()));

...등...

짜증이 나요.에러를 체크하거나 발생시키지 않고, 어레이의 초기화된 어레이를 간단하게 선언하는 것이 좋습니다.

또한 어레이를 sparse로 할 것인지 아닌지에 대한 논의는 상황에 따라 달라집니다.

예를 들어 $a[6][9]가 입력되지 않은 경우 $a[6][9]가 " 또는 0"으로 입력되는 것과 같습니다.

$r = array("arr1","arr2");

단일 어레이 요소를 에코하려면 다음과 같이 기록해야 합니다.

echo $r[0];
echo $r[1];

은 다음과 같습니다.arr1 arr2

그리고 난 이런 방식이 좋아

$cars = array
  (
  array("Volvo",22),
  array("BMW",15),
  array("Saab",5),
  array("Land Rover",17)
  );

어레이를 다른 어레이에 선언해야 합니다.

$arr = array(array(content), array(content));

예:

$arr = array(array(1,2,3), array(4,5,6));

첫 을 사용합니다$arr[0][0]이는 어레이의 첫 번째 어레이의 첫 번째 항목과 같습니다. $arr[1][0]는 어레이의 두 번째 어레이에서 첫 번째 항목을 반환합니다.

하나의 라이너를 사용하여 간단한 값을 얻기 위해 다차원 배열을 빠르게 작성하려면 다음과 같이 이 배열 라이브러리를 사용하는 것이 좋습니다.

$array = Arr::setNestedElement([], '1.2.3', 'value');

그 결과

[
  1 => [
    2 => [
      3 => 'value'
    ]
  ]
]

시도할 수 있지만 두 번째 차원 값은 인덱스와 동일합니다.

$array = array_fill_keys(range(0,5), range(0,5));

빈 어레이는 조금 더 복잡합니다.

$array = array_fill_keys(range(0, 5), array_fill_keys(range(0, 5), null));

//  You can define your 2D array like this ...
$QaA = [
    ['Question_1', 'Answer_1'],
    ['Question_2', 'Answer_2']    ];

// ... and return some very value like this ...
echo $QaA[1][1];      //  "Answer_2"

//  And you can browse through all this 2D array:
foreach ( $QaA as $nr1 => $content )  {
    echo "\n";
    foreach ($content as $nr2 => $answer) {
        echo "    $nr1, $nr2:  $answer";     }  }

/*  Result:
    0, 0:  Question_1    0, 1:  Answer_1
    1, 0:  Question_2    1, 1:  Answer_2     */

//   Thus you can see all the array:
print_r($QaA);   /*   Result: 
Array  (
    [0] => Array  (
          [0] => Question_1
          [1] => Answer_1  )     
    [1] => Array ( 
          [0] => Question_2
          [1] => Answer_2    )   )   */

언급URL : https://stackoverflow.com/questions/1811100/how-do-i-declare-a-two-dimensional-array

반응형