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);
Hasil selepas pelaksanaan ialah:
array( "name"=>array("张三","李四"), "age"=>array(18,20), "hobbies"=>array( array("football","basketball"), array("swimming","shopping") ) )
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; } }
Hasil selepas pelaksanaan ialah:
array( "name"=>"张三", "age"=>18, "grade"=>"一年级", "major"=>"计算机科学", "score"=>array("英语"=>80,"数学"=>90), "address"=>array("province"=>"广东省","city"=>"深圳市") )
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);
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!