현재 위치: > 최신 기사 목록> 필드 별 연관 배열을 분할하고 처리하는 방법

필드 별 연관 배열을 분할하고 처리하는 방법

M66 2025-04-28

PHP에서 Array_Chunk 함수는 일반적으로 배열을 여러 개의 작은 배열로 분할하는 데 사용됩니다. 그러나이 함수는 기본적으로 배열의 크기에 따라 분할 될 수 있으며 배열의 특정 필드에 따라 분할 할 수 없습니다. 지정된 필드로 연관 배열을 분할하고 배열의 데이터를 단계별로 처리하려면 약간의 수정이 필요합니다.

이 기사에서는 다른 PHP 기술과 함께 Array_Chunk 함수를 사용하여 지정된 필드에 따라 연관 배열을 분할하고 단계별로 처리하는 방법을 소개합니다.

1. 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 )
)

2. 연관 배열을 필드별로 분할하십시오

연관 배열의 경우 때때로 배열을 배열의 특정 필드로 분할하려고합니다. 현재 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 )
        )
)

3. 분할 데이터를 점차 처리합니다

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

4. 실제 응용 프로그램 : 필드 및 프로세스로 분할 URL을 단계별로 분할

URL 정보가 포함 된 배열이 있고 URL의 도메인 이름 (예 : M66.net )에 따라 분할 및 처리하려고한다고 가정하십시오. 간단한 예는 다음과 같습니다.

 Processing URLs:
- http://m66.net/page1
- http://m66.net/page2