首頁 >後端開發 >PHP問題 >php如何將陣列中key相同的值合為一個

php如何將陣列中key相同的值合為一個

王林
王林原創
2023-05-05 20:37:062006瀏覽

在PHP程式設計的過程中,常常需要處理陣列中相同key的情況。如果某個陣列中存在相同key的元素,該如何將其合併為一個呢?以下就為大家簡單介紹一些PHP處理陣列的方法,幫助大家解決這個問題。

1.使用array_merge_recursive()函數

PHP內建的array_merge_recursive()函數能夠將兩個或多個數字組合併成一個陣列。如果其中某個數組中出現了相同的key,不同的子項將合併為一個數組,最終結果為多維數組。

範例程式碼如下:

$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")
    )
)

可以看到,相同的key("name","age","hobbies" )的值被合併了,並變成一個多維數組。

2.使用迴圈遍歷

除了使用array_merge_recursive()函數外,也可以使用迴圈遍歷的方式將陣列中相同key的元素合併為一個。

範例程式碼如下:

$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"=>"深圳市")
)

可以看到,原數組中沒有相同key的元素,所以$newArr與原始數組完全相同。

3.使用array_reduce()函數

除了上述兩種方法外,還可以使用PHP自帶的array_reduce()函數來實現將數組中相同key的元素合併為一個。

範例程式碼如下:

$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);

執行後的結果與上述方法二的結果相同。

綜上所述,PHP中處理陣列中相同key的元素有多種方法,每種方法都有其適用的情況。可以根據實際情況選擇最適合的方法來處理。

以上是php如何將陣列中key相同的值合為一個的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn