PHP에서 Array_Chunk 및 Array_Column은 배열에서 유연한 작업을 수행하는 데 도움이되는 두 가지 매우 유용한 기능입니다. 이 두 기능을 합리적으로 사용함으로써 2 차원 배열을 열별로 분할하는 작업을 쉽게 구현할 수 있습니다. 이 기사는 Array_Chunk 와 Array_Column을 결합 하여이 목표를 달성하는 방법을 자세히 소개합니다.
Array_Column :이 함수는 다차원 배열에서 열 값을 추출 할 수 있습니다. 일반적인 사용법은 수동으로 루핑하지 않고 지정된 열의 모든 값을 얻는 것입니다.
array_column(array $array, mixed $column_key, mixed $index_key = null)
Array_Chunk :이 기능은 배열을 여러 개의 작은 배열로 나누고 각 작은 배열은 지정된 수의 요소까지까지 포함됩니다. 이를 통해 큰 배열의 효율적인 분할이 가능합니다.
array_chunk(array $array, int $size, bool $preserve_keys = false)
각 요소에 여러 열에 대한 데이터가 포함 된 2 차원 배열이 있다고 가정합니다. 열을 추출하고 특정 크기에 따라 열의 데이터를 여러 개의 작은 배열로 분할하려면 Array_Column 과 Array_chunk 의 조합을 사용할 수 있습니다.
다음과 같은 2 차원 배열이 있다고 가정합니다.
$data = [
['id' => 1, 'name' => 'Tom', 'age' => 28],
['id' => 2, 'name' => 'Jerry', 'age' => 30],
['id' => 3, 'name' => 'Mickey', 'age' => 25],
['id' => 4, 'name' => 'Donald', 'age' => 35],
['id' => 5, 'name' => 'Goofy', 'age' => 40],
['id' => 6, 'name' => 'Pluto', 'age' => 22]
];
이름 열을 추출하고 2 가지 요소마다 분할하려면 다음 코드를 사용할 수 있습니다.
// 발췌 'name' 목록
$names = array_column($data, 'name');
// 각각을 누르십시오 2 분할 요소
$chunkedNames = array_chunk($names, 2);
// 출력 분할 배열
print_r($chunkedNames);
출력 결과 :
Array
(
[0] => Array
(
[0] => Tom
[1] => Jerry
)
[1] => Array
(
[0] => Mickey
[1] => Donald
)
[2] => Array
(
[0] => Goofy
[1] => Pluto
)
)
실제 응용 분야에서는 종종 더 복잡한 배열을 분할해야합니다. URL 주소 목록이 있고 각 URL의 기본 도메인 이름 부분을 추출한 다음 3 개의 도메인 이름으로 분할한다고 가정합니다. 원래 데이터가 다음과 같습니다.
$data = [
['url' => 'http://www.m66.net/page1', 'other' => 'data1'],
['url' => 'http://www.m66.net/page2', 'other' => 'data2'],
['url' => 'http://www.m66.net/page3', 'other' => 'data3'],
['url' => 'http://www.m66.net/page4', 'other' => 'data4'],
['url' => 'http://www.m66.net/page5', 'other' => 'data5'],
['url' => 'http://www.m66.net/page6', 'other' => 'data6']
];
먼저 Array_Column을 사용하여 모든 URL을 추출한 다음 Parse_url 함수를 사용하여 기본 도메인 이름을 얻은 다음 마지막으로 Array_Chunk를 사용하여 도메인 이름을 세 그룹으로 분할하십시오.
// 발췌 'url' 목록
$urls = array_column($data, 'url');
// 각각을 얻으십시오 URL 기본 도메인 이름 부분
$domains = array_map(function($url) {
return parse_url($url, PHP_URL_HOST);
}, $urls);
// 각각을 누르십시오 3 도메인 이름 분할
$chunkedDomains = array_chunk($domains, 3);
// 출력 분할 도메인 이름 배열
print_r($chunkedDomains);
출력 결과 :