PHP에서 Array_Chunk 함수는 일반적으로 배열을 여러 개의 작은 배열로 분할하는 데 사용됩니다. 그러나이 함수는 기본적으로 배열의 크기에 따라 분할 될 수 있으며 배열의 특정 필드에 따라 분할 할 수 없습니다. 지정된 필드로 연관 배열을 분할하고 배열의 데이터를 단계별로 처리하려면 약간의 수정이 필요합니다.
이 기사에서는 다른 PHP 기술과 함께 Array_Chunk 함수를 사용하여 지정된 필드에 따라 연관 배열을 분할하고 단계별로 처리하는 방법을 소개합니다.
Array_Chunk 함수는 PHP에서 매우 유용한 기능으로 배열을 여러 서브 배열로 분할하고 다차원 배열을 반환 할 수 있습니다. 기본 구문은 다음과 같습니다.
array_chunk(array $array, int $size, bool $preserve_keys = false): array
$ 배열 : 분할 할 배열.
$ 크기 : 각 서브 어레이의 크기.
$ preserve_keys : true 로 설정되면 배열의 키 이름이 보존됩니다. 그렇지 않으면, 다시 안개.
예를 들어, 다음 코드는 간단한 숫자를 두 개의 요소를 포함하는 각 서브 어레이로 분할합니다.
$numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9];
$result = array_chunk($numbers, 2);
print_r($result);
출력 결과 :
Array
(
[0] => Array ( [0] => 1 [1] => 2 )
[1] => Array ( [0] => 3 [1] => 4 )
[2] => Array ( [0] => 5 [1] => 6 )
[3] => Array ( [0] => 7 [1] => 8 )
[4] => Array ( [0] => 9 )
)
연관 배열의 경우 때때로 배열을 배열의 특정 필드로 분할하려고합니다. 현재 Array_Chunk를 사용하여 배열을 분할 할 수 있지만 분할 조건을 지정하려면 다른 작업을 결합해야합니다.
사용자 데이터가 포함 된 연관 배열이 있다고 가정 해 봅시다. 각 사용자는 도시 필드를 가지고 있으며, 동일한 도시의 사용자를 포함하는 각 서브 어레이를 기반으로 이러한 사용자 데이터를 여러 서브 배열로 분할하려고합니다.
$users = [
['name' => 'Alice', 'city' => 'New York'],
['name' => 'Bob', 'city' => 'Los Angeles'],
['name' => 'Charlie', 'city' => 'New York'],
['name' => 'David', 'city' => 'Chicago'],
['name' => 'Eve', 'city' => 'Los Angeles'],
['name' => 'Frank', 'city' => 'Chicago']
];
이 데이터를 City Field로 나누려면 먼저 City별로 사용자를 그룹화해야합니다. array_reduce 또는 기타 방법을 사용하여 구현할 수 있습니다.
$groupedByCity = [];
foreach ($users as $user) {
$groupedByCity[$user['city']][] = $user;
}
현재 $ GroupedByCity 배열의 구조는 다음과 같습니다.
Array
(
[New York] => Array
(
[0] => Array ( [name] => Alice [city] => New York )
[1] => Array ( [name] => Charlie [city] => New York )
)
[Los Angeles] => Array
(
[0] => Array ( [name] => Bob [city] => Los Angeles )
[1] => Array ( [name] => Eve [city] => Los Angeles )
)
[Chicago] => Array
(
[0] => Array ( [name] => David [city] => Chicago )
[1] => Array ( [name] => Frank [city] => Chicago )
)
)
다음으로 Array_Chunk 함수를 사용하여 각 도시의 사용자 데이터를 작은 서브 사업으로 분할 할 수 있습니다. 예를 들어, 각 도시의 사용자 목록이 최대 2 명의 사용자를 포함하기를 원합니다.
$chunkedByCity = [];
foreach ($groupedByCity as $city => $users) {
$chunkedByCity[$city] = array_chunk($users, 2);
}
현재 $ chunkedbycity 배열의 구조는 다음과 같습니다.
Array
(
[New York] => Array
(
[0] => Array ( [name] => Alice [city] => New York )
[1] => Array ( [name] => Charlie [city] => New York )
)
[Los Angeles] => Array
(
[0] => Array ( [name] => Bob [city] => Los Angeles )
[1] => Array ( [name] => Eve [city] => Los Angeles )
)
[Chicago] => Array
(
[0] => Array ( [name] => David [city] => Chicago )
[1] => Array ( [name] => Frank [city] => Chicago )
)
)
Array_Chunk를 사용하여 배열을 필드별로 분할하면 이러한 서브 어레이를 단계별로 처리 할 수 있습니다. 예를 들어, 각 도시의 데이터를 가로 지르고 각 서브 어레이에 대한 사용자 정보를 출력하는 것과 같은 일부 작업을 수행 할 수 있습니다.
foreach ($chunkedByCity as $city => $chunks) {
echo "City: $city\n";
foreach ($chunks as $chunk) {
echo "Users:\n";
foreach ($chunk as $user) {
echo "- {$user['name']}\n";
}
}
}
출력 결과는 다음과 같습니다.
City: New York
Users:
- Alice
- Charlie
City: Los Angeles
Users:
- Bob
- Eve
City: Chicago
Users:
- David
- Frank
URL 정보가 포함 된 배열이 있고 URL의 도메인 이름 (예 : M66.net )에 따라 분할 및 처리하려고한다고 가정하십시오. 간단한 예는 다음과 같습니다.
Processing URLs:
- http://m66.net/page1
- http://m66.net/page2