對於PHP 中不同資料類型數組的合併,有三種常用方法:1)array_merge_recursive,遞歸合併,保留子數組;2)PHP 7.4 的spread operator,展開數組;3)自訂合併函數,提供精細控制。
不同資料型別間的PHP 數組合併
在PHP 中,合併陣列時常會遇到不同資料型別的數據,為了實現這些數據類型的完美合併,這裡介紹三種常見的方法,並提供實戰案例進行演示。
1. array_merge_recursive
此函數可遞歸合併數組,將子數組以數組的形式合併,而不會遺失子數組的資料。
<?php $array1 = ['a' => 1, 'b' => [3, 4], 'c' => ['d' => 6]]; $array2 = ['b' => [1, 2], 'e' => 5]; $mergedArray = array_merge_recursive($array1, $array2); print_r($mergedArray); // 输出: // Array // ( // [a] => 1 // [b] => Array // ( // [0] => 3 // [1] => 4 // [2] => 1 // [3] => 2 // ) // [c] => Array // ( // [d] => 6 // ) // [e] => 5 // ) ?>
2. spread operator(PHP 7.4 )
PHP 7.4 引入了 spread operator,它允許在陣列中展開另一個陣列。
<?php $array1 = ['a' => 1, 'b' => [3, 4]]; $array2 = ['b' => [1, 2], 'e' => 5]; $mergedArray = [...$array1, ...$array2]; print_r($mergedArray); // 输出: // Array // ( // [0] => 1 // [1] => 3 // [2] => 4 // [3] => 1 // [4] => 2 // [5] => 5 // ) ?>
3. 自訂合併函數
如果你需要對合併過程進行更精細的控制,可以寫一個自訂的合併函數。
<?php function custom_array_merge(array $array1, array $array2): array { foreach ($array2 as $key => $value) { if (isset($array1[$key]) && is_array($array1[$key]) && is_array($value)) { $array1[$key] = custom_array_merge($array1[$key], $value); } else { $array1[$key] = $value; } } return $array1; } $array1 = ['a' => 1, 'b' => [3, 4], 'c' => ['d' => 6]]; $array2 = ['b' => [1, 2], 'e' => 5]; $mergedArray = custom_array_merge($array1, $array2); print_r($mergedArray); // 输出: // Array // ( // [a] => 1 // [b] => Array // ( // [0] => 3 // [1] => 4 // [2] => 1 // [3] => 2 // ) // [c] => Array // ( // [d] => 6 // ) // [e] => 5 // ) ?>
以上是PHP數組合併時,如何實現不同資料型別之間的合併?的詳細內容。更多資訊請關注PHP中文網其他相關文章!