>  기사  >  백엔드 개발  >  PHP에서 다차원 배열을 1차원 배열로 변환하는 방법

PHP에서 다차원 배열을 1차원 배열로 변환하는 방법

PHPz
PHPz원래의
2023-04-19 10:07:071240검색

PHP에서 다차원 배열은 다음과 같이 또 다른 배열 또는 여러 배열을 포함하는 배열 구조를 나타냅니다.

$array = array(
  array('name' => 'John', 'age' => 20),
  array('name' => 'Mary', 'age' => 25),
  array('name' => 'Mark', 'age' => 30)
);

이것은 세 개의 요소를 포함하는 2차원 배열이며, 각 요소는 "이름"을 포함하는 배열입니다. 두 개의 키로 구성된 하위 배열 -값 쌍 " 및 "연령". 이 2차원 배열을 1차원 배열로 변환하려면 PHP의 일부 함수를 사용하여 이를 달성할 수 있습니다.

방법 1: array_column() 함수 사용

PHP의 array_column() 함수는 배열의 각 요소에 지정된 키에 해당하는 값을 추출하고 이 값을 포함하는 새 배열을 반환할 수 있습니다. 지정된 키가 존재하지 않으면 요소가 무시됩니다. 2차원 배열의 모든 요소의 "이름" 키에 해당하는 값을 추출하고 3개의 요소를 포함하는 1차원 배열을 얻을 수 있습니다.

$array = array(
  array('name' => 'John', 'age' => 20),
  array('name' => 'Mary', 'age' => 25),
  array('name' => 'Mark', 'age' => 30)
);

$names = array_column($array, 'name');
print_r($names);  // 输出:Array ( [0] => John [1] => Mary [2] => Mark )

방법 2: array_reduce() 함수 사용

PHP의 array_reduce () 함수 콜백 함수의 규칙에 따라 배열을 반복하여 최종 값을 생성할 수 있습니다. 이 함수를 사용하여 2차원 배열에 있는 각 요소의 하위 배열을 1차원 배열로 병합할 수 있습니다.

$array = array(
  array('name' => 'John', 'age' => 20),
  array('name' => 'Mary', 'age' => 25),
  array('name' => 'Mark', 'age' => 30)
);

$flatten = array_reduce($array, function($carry, $item) {
  return array_merge($carry, $item);
}, array());
print_r($flatten);  // 输出:Array ( [name] => Mark [age] => 30 )

위 코드에서 array_reduce() 함수는 콜백 함수와 초기 값을 받아들입니다. 콜백 함수의 $carry 매개변수는 현재 결과를 나타내고, $item은 현재 요소의 값을 나타냅니다. 초기값은 빈 배열입니다. 즉, 최종 결과 배열은 빈 배열을 초기값으로 사용하여 반복 처리를 시작합니다. array_merge() 함수는 콜백 함수에서 현재 요소의 하위 배열과 이전 결과 배열을 병합하는 데 사용됩니다.

2차원 배열의 각 요소에 키-값 쌍의 수가 다른 경우 위의 방법 2는 마지막 요소의 모든 키-값 쌍만 가져올 수 있다는 점에 유의해야 합니다. 보다 엄격한 상황에서는 데이터 손실을 방지하기 위해 루프 전에 하위 배열을 확인할 수 있습니다.

위는 PHP 다차원 배열을 1차원 배열로 변환하는 두 가지 방법입니다. 특정 상황과 데이터 구조에 따라 적절한 방법을 선택하면 코드의 효율성과 가독성을 높일 수 있습니다.

위 내용은 PHP에서 다차원 배열을 1차원 배열로 변환하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.