是否可以列出带有函数的数组中的数组?
我有一个插件的配置数组,我在其中调用函数,该函数将列出数组中的数组。
'fields' => array(
array('id'=>'someid','id'=>'something'),
array('id'=>'someid','id'=>'something'),
array('id'=>'someid','id'=>'something')
)
我做了功能:
function config(){
$a = array('id'=>'someidA','id'=>'somethingA');
$b = array('id'=>'someidB','id'=>'somethingB');
return array($a,$b);
}
当在数组中调用 config() 函数时,我得到:
'fields' => array(
array('id'=>'someid','id'=>'something'),
array('id'=>'someid','id'=>'something'),
array('id'=>'someid','id'=>'something'),
array(
array('id'=>'someidA','id'=>'somethingA'),
array('id'=>'someidB','id'=>'somethingB')
)
)
但我需要:
'fields' => array(
array('id'=>'someid','id'=>'something'),
array('id'=>'someid','id'=>'something'),
array('id'=>'someid','id'=>'something'),
array('id'=>'someidA','id'=>'somethingA'),
array('id'=>'someidB','id'=>'somethingB')
)
我知道这有效:
'fields' => array(
array('id'=>'someid','id'=>'something'),
array('id'=>'someid','id'=>'something'),
array('id'=>'someid','id'=>'something'),
list($a,$b)=config(),
$a,$b,
)
但它对我没有太大帮助,因为有时有很多 $a,$,$c,$d 等,所以如果以某种方式函数可以列出这些数组,那将是最好的。
有没有办法摆脱该容器数组并将数组直接列出到另一个数组?
>array_merge
会为你工作。它将 2 个或多个数组合并为一个数组。
<?php
$arr = array(
'fields' => array(
array('id1'=>'someid','id2'=>'something'),
array('id1'=>'someid','id2'=>'something'),
array('id1'=>'someid','id2'=>'something')
)
);
function config(){
$a = array('id1'=>'someidA','id2'=>'somethingA');
$b = array('id1'=>'someidB','id2'=>'somethingB');
return array($a,$b);
}
$config_arr = config();
$arr['fields'] = array_merge($arr['fields'], $config_arr);
print_r($arr);
?>
工作示例。
输出
Array
(
[fields] => Array
(
[0] => Array
(
[id1] => someid
[id2] => something
)
[1] => Array
(
[id1] => someid
[id2] => something
)
[2] => Array
(
[id1] => someid
[id2] => something
)
[3] => Array
(
[id1] => someidA
[id2] => somethingA
)
[4] => Array
(
[id1] => someidB
[id2] => somethingB
)
)
)
作为萨米尔解决方案的替代方案...
通过使用 "splat 运算符" ( ...
) 从config()
中解压缩返回的数组,然后array_push()
追加两个子数组,您可以获得所需的结果。
代码:(演示)
$config = [
'fields' => [
['id1' => 'someid', 'id2' => 'something'],
['id1' => 'someid', 'id2' => 'something'],
['id1' => 'someid', 'id2' => 'something']
]
];
function config() {
$a = ['id1' => 'someidA','id2' => 'somethingA'];
$b = ['id1' => 'someidB','id2' => 'somethingB'];
return [$a, $b];
}
array_push($config['fields'], ...config());
var_export($config);