Php 什么';根据每个数组中的键值合并到数组的最佳方法是什么?
我有这两个数组,我目前正在使用两个循环进行合并。我想知道是否有更好的方法合并这些阵列:Php 什么';根据每个数组中的键值合并到数组的最佳方法是什么?,php,arrays,Php,Arrays,我有这两个数组,我目前正在使用两个循环进行合并。我想知道是否有更好的方法合并这些阵列: $args = array( 'Name' => 'Test Name', 'Email' => 'root@localhost.com', 'Message' => 'There is no place like 127.0.0.1!' ); $fields = array( 2 => array( 'label' => 'Name', '
$args = array(
'Name' => 'Test Name',
'Email' => 'root@localhost.com',
'Message' => 'There is no place like 127.0.0.1!'
);
$fields = array(
2 => array(
'label' => 'Name',
'id' => 2
),
3 => array(
'label' => 'Email',
'id' => 3
),
4 => array(
'label' => 'Message',
'id' => 4
)
);
我正在尝试将它们合并到一个数组中,如下所示:
$merged = array(
2 => array(
'label' => 'Name',
'id' => 2,
'value' => 'Test Name'
),
3 => array(
'label' => 'Email',
'id' => 3,
'value' => 'root@localhost.com'
),
4 => array(
'label' => 'Message',
'id' => 4,
'value' => 'There is no place like 127.0.0.1!'
)
);
我目前正在使用这个双foreach循环来完成这项工作:
foreach ( $args['fields'] as $k => $v ) {
foreach( $fields['fields'] as $i => $item ) {
if ( $item['label'] === $k ) {
$fields['fields'][$i]['value'] = $v;
}
}
}
我尝试过使用array\u merge
和array\u merge\u recurrisve
,但它会从$字段中抛出数组键
有什么想法或更好的方法来尝试实现我想要的结果吗?您不需要嵌套循环。只需在$fields
数组上循环,然后使用索引访问$args
中的相应条目
$merged = []
foreach ($fields as $key => &field) {
$field['value'] = $args[$field['label']];
$merged[$key] = $field;
}
你正在使用的方法有什么问题吗?我同意你正在使用的方法将是最有效的。。以防万一钥匙弄混了等等。。在我看来,您已经“正确地”完成了。实际的$fields
数组中有更多的值,而仅仅为了找到一个匹配的字段而遍历所有字段似乎效率低下。@zeropsi PHP速度很快。如果你不循环数十万行,你可能会没事的。谢谢@GrumpyCrouton-虽然我希望我永远不会有那么多行可以循环,但很有可能有几千行。我认为,为了更好地衡量,并且为了确保增加一些逻辑,我将在代码中添加一个break
,这样一旦匹配,它就会旋转出每个的内部foreach
。