对于 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中文网其它相关文章!