현재 위치: > 최신 기사 목록> 복잡한 데이터 구조를 구축하기 위해 array_reduce ()와 결합합니다

복잡한 데이터 구조를 구축하기 위해 array_reduce ()와 결합합니다

M66 2025-06-07

PHP에서 Array_combine ()array_reduce ()는 각각 두 개의 배열을 연관 배열로 결합하고 특정 규칙 (예 : 단순화 또는 변환)에 따라 배열 요소를 줄이는 데 사용되는 매우 강력한 기능입니다. 이 두 기능을 함께 사용하면보다 복잡한 데이터 구조를 쉽게 구성 할 수 있습니다. 이 기사에서는이 두 기능을 조합하여 다층 중첩 어레이 또는 기타 복잡한 데이터 구조를 구축하는 방법을 살펴 봅니다.

Array_combine () 란 무엇입니까?

Array_combine () 은 두 개의 배열을 매개 변수로 받아들이고 첫 번째 배열의 값을 키로 사용하고 두 번째 배열의 값을 값으로 사용하는 PHP 내장 함수입니다. 두 배열의 길이가 다른 경우 함수는 False를 반환합니다.

샘플 코드 :

 $keys = ["name", "age", "gender"];
$values = ["John", 25, "male"];

$result = array_combine($keys, $values);
print_r($result);

산출:

 Array
(
    [name] => John
    [age] => 25
    [gender] => male
)

array_reduce () 란 무엇입니까?

Array_Reduce () 는 또한 PHP 내장 함수이며 콜백 함수를 통해 배열 값을 단일 값으로 점차 단순화하는 데 사용됩니다. 일반적 으로이 값은 누적 된 합계 또는 다른 복잡한 구조 일 수 있습니다.

샘플 코드 :

 $numbers = [1, 2, 3, 4, 5];

$sum = array_reduce($numbers, function($carry, $item) {
    return $carry + $item;
});

echo $sum; // 산출 15

Array_combine ()array_reduce ()를 함께 사용하십시오

Array_combine ()array_reduce ()는 복잡한 데이터 구조를 처리 할 때 특히 키 값 쌍의 배열을 기반으로 일종의 요약 구조를 생성해야 할 때 매우 유용합니다. 이 두 기능을 결합하여보다 복잡한 중첩 어레이를 만들 수 있습니다.

예 : 데이터 세트를 기반으로 다층 중첩 연관 배열 구축

학생의 성적이 포함 된 일련의 데이터가 있다고 가정합니다.이 데이터는 주제별로 그룹화 한 다음 Array_combine () 을 통해 각 주제에 대한 성적 요약을 생성합니다.

 $students = [
    ["name" => "John", "subject" => "Math", "score" => 85],
    ["name" => "Alice", "subject" => "Math", "score" => 92],
    ["name" => "Bob", "subject" => "Math", "score" => 78],
    ["name" => "John", "subject" => "Science", "score" => 88],
    ["name" => "Alice", "subject" => "Science", "score" => 94],
    ["name" => "Bob", "subject" => "Science", "score" => 79],
];

$subjects = array_reduce($students, function($carry, $item) {
    // 사용 subject 열쇠로,점수는 값으로 그룹화됩니다
    if (!isset($carry[$item['subject']])) {
        $carry[$item['subject']] = [];
    }
    $carry[$item['subject']][] = $item['score'];
    return $carry;
}, []);

print_r($subjects);

산출:

 Array
(
    [Math] => Array
        (
            [0] => 85
            [1] => 92
            [2] => 78
        )

    [Science] => Array
        (
            [0] => 88
            [1] => 94
            [2] => 79
        )
)

이 예에서는 먼저 Array_Reeduce ()를 사용하여 주제를 기반으로 학생의 점수를 그룹화합니다. 그런 다음 Array_combine ()을 추가로 사용하여 각 주제의 학생 이름과 등급을 매핑하여보다 복잡한 구조를 구축 할 수 있습니다.

더욱 복잡한 : 다층 중첩 어레이 구축

다음으로, 우리는 Array_combine ()을 계속 사용하여 각 과목의 학생 점수를 학생 이름으로 더 나눈다.

 $students = [
    ["name" => "John", "subject" => "Math", "score" => 85],
    ["name" => "Alice", "subject" => "Math", "score" => 92],
    ["name" => "Bob", "subject" => "Math", "score" => 78],
    ["name" => "John", "subject" => "Science", "score" => 88],
    ["name" => "Alice", "subject" => "Science", "score" => 94],
    ["name" => "Bob", "subject" => "Science", "score" => 79],
];

$subjects = array_reduce($students, function($carry, $item) {
    if (!isset($carry[$item['subject']])) {
        $carry[$item['subject']] = [];
    }
    // 以学生的姓名열쇠로,등급은 값으로 매핑됩니다
    $carry[$item['subject']] = array_combine(
        array_column($carry[$item['subject']], 'name'), 
        array_column($carry[$item['subject']], 'score')
    );
    return $carry;
}, []);

print_r($subjects);

현재 Array_column () 을 통해 해당 키와 값을 추출하고 마지막으로 더 복잡한 중첩 배열을 만들어 주제 및 학생 이름에 따라 검색 및 작동 할 수 있습니다.

이러한 방식으로 Array_combine ()Array_reduce ()를 결합하여 다른 규칙에 따라 그룹화 및 요약 된 데이터 구조를 쉽게 구축 할 수 있습니다. 실제 개발에서 이러한 기능을 유연하게 사용하면 데이터 처리의 효율성과 가독성을 효과적으로 향상시킬 수 있습니다.