在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中文網其他相關文章!