PHP如何将数组中调用的函数返回值直接合并为数组的键值对?
实现PHP数组直接合并函数返回的键值对
你遇到的问题是因为直接在数组里调用返回数组的函数时,PHP会把这个返回的数组当作当前数组的一个子元素,而非合并它的键值对。下面给你两种实用的解决办法:
方法1:使用数组展开运算符(PHP 7.4+)
这是最简洁直观的方案,利用PHP 7.4引入的数组展开语法,直接把函数返回的数组元素拆解开合并到目标数组中:
$data = ['name' => 'John', ...getSurname()]; print_r($data); function getSurname() { return ['surname' => 'Doe']; }
运行后就能得到你期望的输出:
Array ( [name] => John [surname] => Doe )
方法2:使用array_merge()函数(兼容低版本PHP)
如果你的PHP版本低于7.4,不支持展开运算符,那就用array_merge()来合并两个数组:
$data = array_merge(['name' => 'John'], getSurname()); print_r($data); function getSurname() { return ['surname' => 'Doe']; }
这个方法兼容性拉满,原理就是将原数组和函数返回的数组合并成一个新数组,自然就把键值对整合到一起了。
原代码问题解析
你原来的写法['name' => 'John', getSurname()]中,PHP会把getSurname()返回的数组当成当前数组的一个数值索引元素,所以才会出现[0] => Array ( ... )的子数组结构,而不是直接合并键值对。
内容的提问来源于stack exchange,提问作者Ivica Pesovski
相关产品推荐
相关产品推荐

