如何将一个包含值的数组合并为一个包含stdClass对象的数组


How can I merge one array with values into an array with stdClass objects?

我有两个数组,正在寻找合并它们的方法。标准array_merge()功能不起作用。

你知道没有foreach迭代的好的解决方案吗?

我的第一个阵列:

Array
(
    [0] => stdClass Object
        (
            [field_value] => Green
            [count] => 
        )
    [1] => stdClass Object
        (
            [field_value] => Yellow
            [count] => 
        )
)

我的第二个阵列:

Array
(
    [0] => 2
    [1] => 7
)

因此,我想得到:*

Array
(
    [0] => stdClass Object
        (
            [field_value] => Green
            [count] => 2
        )
    [1] => stdClass Object
        (
            [field_value] => Yellow
            [count] => 7
        )
)

这应该适用于您:

只需使用array_map()在两个数组中循环,并将数组一中的参数作为引用传递即可。然后,您可以简单地将值分配给count属性。

<?php
    array_map(function(&$v1, $v2){
        $v1->count = $v2;
    }, $arr1, $arr2);
    print_r($arr1);
?>

输出:

Array
(
    [0] => stdClass Object
        (
            [field_value] => Green
            [count] => 2
        )
    [1] => stdClass Object
        (
            [field_value] => Yellow
            [count] => 7
        )
)
 [akshay@localhost tmp]$ cat test.php
 <?php
  $first_array = array( 
            (object)array("field_value"=>"green","count"=>null),
            (object)array("field_value"=>"yellow","count"=>null)
             );
  $second_array = array(2,7);

  function simple_merge($arr1, $arr2)
  {
    return array_map(function($a,$b){ $a->count = $b; return $a; },$arr1,$arr2);
  }
  print_r($first_array);
  print_r($second_array);
  print_r(simple_merge($first_array,$second_array));
 ?>

输出

 [akshay@localhost tmp]$ php test.php
 Array
 (
     [0] => stdClass Object
         (
             [field_value] => green
             [count] => 
         )
     [1] => stdClass Object
         (
             [field_value] => yellow
             [count] => 
         )
 )
 Array
 (
     [0] => 2
     [1] => 7
 )
 Array
 (
     [0] => stdClass Object
         (
             [field_value] => green
             [count] => 2
         )
     [1] => stdClass Object
         (
             [field_value] => yellow
             [count] => 7
         )
 )

这是一个简单的

代码:

 $i = 0;
    foreach($firstarrays as $firstarr)
    {
        $firstarr['count'] = $secondarray[$i];
        $i++;
    }

另一个选项:

$a1 = Array(
    (object) Array('field_value' => 'Green', 'count' => null),
    (object) Array('field_value' => 'Yellow', 'count' => null)
);
$a2 = Array(2, 7);
for ($i=0; $i<sizeof($a1); $i++) {
    $a1[$i]->count=$a2[$i];
}