PHP에서 Array_combine () 및 array_reduce ()는 각각 두 개의 배열을 연관 배열로 결합하고 특정 규칙 (예 : 단순화 또는 변환)에 따라 배열 요소를 줄이는 데 사용되는 매우 강력한 기능입니다. 이 두 기능을 함께 사용하면보다 복잡한 데이터 구조를 쉽게 구성 할 수 있습니다. 이 기사에서는이 두 기능을 조합하여 다층 중첩 어레이 또는 기타 복잡한 데이터 구조를 구축하는 방법을 살펴 봅니다.
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 () 는 또한 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 () 을 통해 각 주제에 대한 성적 요약을 생성합니다.
$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 ()를 결합하여 다른 규칙에 따라 그룹화 및 요약 된 데이터 구조를 쉽게 구축 할 수 있습니다. 실제 개발에서 이러한 기능을 유연하게 사용하면 데이터 처리의 효율성과 가독성을 효과적으로 향상시킬 수 있습니다.