我有两个具有相同索引的数组,不幸的是array_merge_recursive对我不起作用。
第一个数组是这样的:
<ion-item ng-show='query' ng-repeat="order in orders | filter:query" class="item-thumbnail-left item-text-wrap"
href="#/tab/list/{{order.bkur_user}}">
第二个数组是:
$firstarray = array(
0 => array('id' => 1, 'name' => 'John Smith'),
1 => array('id' => 2, 'name' => 'Jane Doe')
);
期望的输出将是这样的,
$secondarray = array(
0 => array('email' => 'john@smith.com'),
1 => array('email' => 'jane@doe.com')
);
但我得到第二个数组项附加到原始数组,如下所示:
Array
(
[0] => Array
(
[id] => 1
[name] => John Smith
[email] => john@smith.com
)
[1] => Array
(
[id] => 2
[name] => Jane Doe
[email] => jane@doe.com
)
)
答案 0 :(得分:3)
for($i = 0; $i<count($firstarray); $i++){
$output[] = array_merge($firstarray[$i],$secondarray[$i]);
}
您可以使用上面提到的代码,也可以使用array_map()&amp; array_merge()。 像:
$output = array_map('array_merge', $firstarray, $secondarray);
答案 1 :(得分:1)
你们肯定会采取复杂的方式:)
$mergedarray = array_map('array_merge', $firstarray, $secondarray);
基本上&#34;合并每个索引的数组&#34;。
array_merge_recursive
不起作用,因为数字索引不被视为关联键。所以它只是推动价值而不是合并它们。
答案 2 :(得分:0)
尝试以下代码: -
$firstarray = array(
0 => array('id' => 1, 'name' => 'John Smith'),
1 => array('id' => 2, 'name' => 'Jane Doe')
);
$secondarray = array(
0 => array('email' => 'john@smith.com'),
1 => array('email' => 'jane@doe.com')
);
使用简单的foreach循环
$res = [];
foreach($firstarray as $k=>$record){
$record['email'] = $secondarray[$k]['email'];
$res[] = $record;
}
echo '<pre>'; print_r($res);
或使用array_map()功能
$res = array_map(function($a,$b){
return ['id'=>$a['id'],'name'=>$a['name'],'email'=>$b['email']];
},$firstarray,$secondarray);
echo '<pre>'; print_r($res);
答案 3 :(得分:0)
试试这个:
$firstarray = array(
0 => array('id' => 1, 'name' => 'John Smith'),
1 => array('id' => 2, 'name' => 'Jane Doe')
);
$secondarray = array(
0 => array('email' => 'john@smith.com'),
1 => array('email' => 'jane@doe.com')
);
foreach($firstarray as $key1 => $value1)
{
foreach($secondarray as $key2 => $value2)
{
if($key1 == $key2)
{
$firstarray[$key1]["email"] = $value2["email"];
}
}
}
print_r($firstarray);