繁体   English   中英

PHP 中是否有合并两个多维关联数组的函数?

[英]Is there a function in PHP that merges two multidimensional associative arrays?

请注意,我感谢那些做出回应的人。 抱歉回复晚了,我发这个帖子就一直生病,这个例子恐怕我没有说的很清楚。 让我们再试一次:

使用 PHP,我有两个二维关联数组,我想将它们与所有字段组合成一个数组,请参见下面的示例

$ary_0[0]['name'] = 'Bobby', $ary_0[0]['address'] = '123 E Park Place'
$ary_0[1]['name'] = 'Chris', $ary_0[1]['address'] = '13 Bonanza Trail'
$ary_0[2]['name'] = 'Sally', $ary_0[2]['address'] = '97 West 3rd Ave.'

$ary_1[0]['name'] = 'Bobby', $ary_1[0]['phone'] = '555-555-1212'
$ary_1[1]['name'] = 'Chris', $ary_1[1]['phone'] = '222-555-1212'
$ary_1[2]['name'] = 'Sally', $ary_1[2]['phone'] = '999-555-1212'

使结果数组看起来像

$ary_2[0]['name'] = 'Bobby', $ary_2[0]['address'] = '123 E Park Place', $ary_2[0]['phone'] = '555-555-1212'
$ary_2[1]['name'] = 'Chris', $ary_2[1]['address'] = '13 Bonanza Trail', $ary_2[1]['phone'] = '222-555-1212'
$ary_2[2]['name'] = 'Sally', $ary_2[2]['address'] = '97 West 3rd Ave.', $ary_2[2]['phone'] = '999-555-1212'

请注意,两个数组已经按名称排序,名称字段是两个数组的连接。 事实上,这些数据是从两个不同的数据库中提取的,不能按惯例连接成表,但这就是我想要的效果。

PHP中是否有一个函数可以像这样合并这两个数组? 我已经翻遍了所有文献,但除了强制使用名称值寻找匹配项之外,找不到其他可行的解决方案。 有人有一个优雅而简单的解决方案吗? 我不相信 array_merge() 会起作用......

TIA,迈克

由于它们已经按名称排序,您可以执行 for 循环并使用array_merge吗?

$combined_arr = [];
for ( $i = 0; $i < count( $1 ); $i++ ) {
    combined_arr[] = array_merge( arr[0], arr[1] );
}

让我们重写数组,让每个人都更清楚,假设您的代码只是一些伪代码,从而忽略语法和重复的键错误。

$ary=[
    ['name'=>'Bobby','address'=>'123 E Park Place'],
    ['name'=>'Chris','address'=>'13 Bonanza Trail'],
    ['name'=>'Sally','address'=>'97 West 3rd Ave.'],
    ['name'=>'Bobby','phone'=>'555-555-1212'],
    ['name'=>'Chris','phone'=>'222-555-1212'],
    ['name'=>'Sally','phone'=>'999-555-1212']
];

这将为您提供几乎您目前拥有的东西。

没有办法用内置函数来做到这一点,它太具体了。 但是解决这个问题很简单。

$newArray=[];
foreach($ary as $key=>$val) {
    $found=false;
    foreach($newArray as $nKey=>$nVal) {
        if($nVal['name']==$val['name']) {
            $found=true;
            $newArray[$nKey]=array_merge($nVal,$val);
            break;
        }
    }
    if(!$found) $newArray[]=$val;
}

如果您有太多元素并且需要更高效的东西,您应该重新设计您的数组或实现其他搜索算法或使用带有索引的数据库。

请注意, []符号仅适用于 PHP +5.4。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM