>  기사  >  백엔드 개발  >  PHP에서 배열의 동일한 키를 가진 값을 하나로 결합하는 방법

PHP에서 배열의 동일한 키를 가진 값을 하나로 결합하는 방법

王林
王林원래의
2023-05-05 20:37:061946검색

PHP 프로그래밍 과정에서 배열의 동일한 키를 처리해야 하는 경우가 종종 있습니다. 배열에 동일한 키를 가진 요소가 있는 경우 이를 하나로 병합하는 방법은 무엇입니까? 아래에서는 이 문제를 해결하는 데 도움이 되도록 PHP에서 배열을 처리하는 몇 가지 방법을 간략하게 소개하겠습니다.

1. array_merge_recursive() 함수를 사용하세요.

PHP에 내장된 array_merge_recursive() 함수는 두 개 이상의 배열을 하나의 배열로 병합할 수 있습니다. 배열 중 하나에 동일한 키가 나타나면 서로 다른 하위 항목이 하나의 배열로 병합되고 최종 결과는 다차원 배열이 됩니다.

샘플 코드는 다음과 같습니다.

$arr1 = array("name"=>"张三","age"=>18,"hobbies"=>array("football","basketball"));
$arr2 = array("name"=>"李四","age"=>20,"hobbies"=>array("swimming","shopping"));

$result = array_merge_recursive($arr1,$arr2);

실행 후 결과는

array(
    "name"=>array("张三","李四"),
    "age"=>array(18,20),
    "hobbies"=>array(
        array("football","basketball"),
        array("swimming","shopping")
    )
)

보시다시피 동일한 키의 값("이름", "나이", "취미")이 병합되어 다차원 배열이 됩니다.

2. 루프 순회 사용

array_merge_recursive() 함수를 사용하는 것 외에도 루프 순회를 사용하여 배열에서 동일한 키를 가진 요소를 하나로 병합할 수도 있습니다.

샘플 코드는 다음과 같습니다.

$arr = array(
    "name"=>"张三",
    "age"=>18,
    "grade"=>"一年级",
    "major"=>"计算机科学",
    "score"=>array("英语"=>80,"数学"=>90),
    "address"=>array("province"=>"广东省","city"=>"深圳市")
);

$newArr = array();

foreach($arr as $key=>$value){
    if(array_key_exists($key,$newArr)){
        if(!is_array($newArr[$key])){
            $tmp = $newArr[$key];
            $newArr[$key] = array();
            array_push($newArr[$key],$tmp);
        }
        array_push($newArr[$key],$value);
    }else{
        $newArr[$key] = $value;
    }
}

실행 후 결과는 다음과 같습니다.

array(
    "name"=>"张三",
    "age"=>18,
    "grade"=>"一年级",
    "major"=>"计算机科学",
    "score"=>array("英语"=>80,"数学"=>90),
    "address"=>array("province"=>"广东省","city"=>"深圳市")
)

보시다시피 원본 배열에는 동일한 키를 가진 요소가 없으므로 $newArr은 원본 배열과 완전히 동일합니다. .

3. array_reduce() 함수를 사용하세요

위의 두 가지 방법 외에도 PHP에 포함된 array_reduce() 함수를 사용하여 배열에서 동일한 키를 가진 요소를 하나로 병합할 수도 있습니다.

샘플 코드는 다음과 같습니다.

$arr = array(
    "name"=>"张三",
    "age"=>18,
    "grade"=>"一年级",
    "major"=>"计算机科学",
    "score"=>array("英语"=>80,"数学"=>90),
    "address"=>array("province"=>"广东省","city"=>"深圳市")
);

$newArr = array_reduce(array_keys($arr),function($result,$key) use ($arr){
    if(array_key_exists($key,$result)){
        if(!is_array($result[$key])){
            $tmp = $result[$key];
            $result[$key] = array();
            array_push($result[$key],$tmp);
        }
        array_push($result[$key],$arr[$key]);
    }else{
        $result[$key] = $arr[$key];
    }
    return $result;
},array());

print_r($newArr);

실행 후의 결과는 위의 방법 2의 결과와 같습니다.

요약하자면, PHP 배열에서 동일한 키를 가진 요소를 처리하는 방법에는 여러 가지가 있으며 각 방법마다 적용 가능한 상황이 있습니다. 실제 상황에 따라 가장 적절한 처리 방법을 선택할 수 있습니다.

위 내용은 PHP에서 배열의 동일한 키를 가진 값을 하나로 결합하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.