Bagaimana untuk menggabungkan nilai dengan kunci yang sama dalam tatasusunan menjadi satu dalam php

王林
Lepaskan: 2023-05-05 20:37:06
asal
1964 orang telah melayarinya

Dalam proses pengaturcaraan PHP, selalunya perlu berurusan dengan kunci yang sama dalam tatasusunan. Jika terdapat elemen dengan kunci yang sama dalam tatasusunan, bagaimana untuk menggabungkannya menjadi satu? Di bawah ini saya akan memperkenalkan secara ringkas beberapa kaedah pemprosesan tatasusunan dalam PHP untuk membantu anda menyelesaikan masalah ini.

1. Gunakan fungsi array_merge_recursive()

Fungsi array_merge_recursive() terbina dalam PHP boleh menggabungkan dua atau lebih tatasusunan menjadi satu tatasusunan. Jika kunci yang sama muncul dalam salah satu tatasusunan, sub-item yang berbeza akan digabungkan menjadi satu tatasusunan, dan hasil akhir akan menjadi tatasusunan berbilang dimensi.

Kod sampel adalah seperti berikut:

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

$result = array_merge_recursive($arr1,$arr2);
Salin selepas log masuk

Hasil selepas pelaksanaan ialah:

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

Seperti yang anda lihat, kunci yang sama("nama","umur", nilai "hobi") digabungkan dan bertukar menjadi tatasusunan berbilang dimensi.

2. Gunakan loop traversal

Selain menggunakan fungsi array_merge_recursive(), anda juga boleh menggunakan loop traversal untuk menggabungkan elemen dengan kunci yang sama dalam array menjadi satu.

Kod sampel adalah seperti berikut:

$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;
    }
}
Salin selepas log masuk

Hasil selepas pelaksanaan ialah:

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

Seperti yang anda lihat, tiada unsur dengan kunci yang sama dalam tatasusunan asal , jadi $newArr berbeza daripada tatasusunan asal Tepat sama.

3 Gunakan fungsi array_reduce()

Selain daripada dua kaedah di atas, anda juga boleh menggunakan fungsi array_reduce() yang disertakan dengan PHP untuk menggabungkan elemen dengan kunci yang sama dalam array menjadi satu.

Kod sampel adalah seperti berikut:

$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);
Salin selepas log masuk

Hasil selepas pelaksanaan adalah sama seperti hasil kaedah 2 di atas.

Ringkasnya, terdapat banyak cara untuk memproses elemen dengan kunci yang sama dalam tatasusunan dalam PHP, dan setiap kaedah mempunyai situasi yang berkenaan. Anda boleh memilih kaedah yang paling sesuai untuk menanganinya mengikut situasi sebenar.

Atas ialah kandungan terperinci Bagaimana untuk menggabungkan nilai dengan kunci yang sama dalam tatasusunan menjadi satu dalam php. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan