PHP将值从一个数组插入到另一个数组


php insert values from one array into another

我得到了以下2个数组:

array(3) {
[0]=>
array(2) {
["id"]=> 5
["moreinfo"]=> 'moreinfo'
}
[1]=>
array(2) {
["id"]=>10,
["moreinfo"]=> 'moreinfo'
}
[2]=>
array(2) {
["id"]=>15
["moreinfo"]=> 'moreinfo'
} ... and so forth

和第二个:

array(3) {
[5] => "Mike"
[10]=> "Bob"
[15]=> "Alice" //here keys are user ids from the first array

我需要合并它们,以便将字段名称添加到第一个数组中,以获得以下内容:

array(3) {
[0]=>
array(3) {
["id"]=> 5,
["name"]=> Mike,
["moreinfo"]=> 'moreinfo'
}
[1]=>
array(3) {
["id"]=>10,
["name"]=> Bob,
["moreinfo"]=> 'moreinfo'
}
[2]=>
array(3) {
["id"]=>15,
["name"]=> Alice,
["moreinfo"]=> 'moreinfo'
}

我尝试使用array_merge,但它没有产生期望的结果。我也使用foreach,但它也只在数组的末尾插入1个名字。有什么好办法吗?谢谢你。

UPD My foreach try:

foreach($arr1 as $k => $v) {
            $arr1['name'] = $arr2[$v['id']];
        }

假设两个数组分别是$array1$array2,您需要在$array1中为'name'添加一个新的键值对以及先前存在的记录。

foreach ($array1 as &$arr) {
   /* $arr['id'] stores 5, 10, 15... So, that implies $array2[5] i.e Mike, $array2[10] i.e Bob and so on. */
   $arr['name'] = $array2[$arr['id']]; 
}

这很容易,遍历第一个数组的每个元素,并通过ID从第一个数组查找第二个数组中的名称。

所以你的代码可能看起来像这样,
foreach ($array as $key=>$element) {
   $element['name'] = $array2[$element['id']];
   $array[$key]=$element; //It's necessary to update the element.
}

在上面的例子中,$array是第一个数组,$array2是第二个按id键命名的数组。

foreach ($array1 as $key=>$arr) {
    $array1[$key]['name'] = $array2[$arr['id']];
}

也许这对你有帮助:

$arr1 = array(
  array("id"=>5,"moreinfo"=>"moreinfo"),
  array("id"=>10,"moreinfo"=>"moreinfo"),
  array("id"=>15,"moreinfo"=>"moreinfo")
);
$arr2 = array(5=>"mike",10=>"Bob",15=>"Alice");
//
$result = array_map(function($elm)use($arr2){
    $elm['name'] = $arr2[$elm["id"]];
    return array("id"=>$elm["id"],"name"=>$elm["name"],"moreinfo"=>$elm["moreinfo"]);
},$arr1);
var_dump($result);
结果:

array (size=3)
  0 => 
    array (size=3)
      'id' => int 5
      'name' => string 'mike' (length=4)
      'moreinfo' => string 'moreinfo' (length=8)
  1 => 
    array (size=3)
      'id' => int 10
      'name' => string 'Bob' (length=3)
      'moreinfo' => string 'moreinfo' (length=8)
  2 => 
    array (size=3)
      'id' => int 15
      'name' => string 'Alice' (length=5)
      'moreinfo' => string 'moreinfo' (length=8)