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

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

王林
發布: 2023-05-05 20:37:06
原創
2083 人瀏覽過

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

1.使用array_merge_recursive()函數

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

範例程式碼如下:

1

2

3

4

$arr1 = array("name"=>"张三","age"=>18,"hobbies"=>array("football","basketball"));

$arr2 = array("name"=>"李四","age"=>20,"hobbies"=>array("swimming","shopping"));

 

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

登入後複製

執行後得到的結果為:

1

2

3

4

5

6

7

8

array(

    "name"=>array("张三","李四"),

    "age"=>array(18,20),

    "hobbies"=>array(

        array("football","basketball"),

        array("swimming","shopping")

    )

)

登入後複製

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

2.使用迴圈遍歷

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

範例程式碼如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

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

    }

}

登入後複製

執行後得到的結果為:

1

2

3

4

5

6

7

8

array(

    "name"=>"张三",

    "age"=>18,

    "grade"=>"一年级",

    "major"=>"计算机科学",

    "score"=>array("英语"=>80,"数学"=>90),

    "address"=>array("province"=>"广东省","city"=>"深圳市")

)

登入後複製

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

3.使用array_reduce()函數

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

範例程式碼如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

$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
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板