如何将一个包含值的数组合并到包含 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() 循环遍历两个数组,并将数组一的参数作为参考传递。然后您可以简单地将值分配给计数 属性.

<?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
        )

)

很简单

代码:

 $i = 0;
    foreach($firstarrays as $firstarr)
    {
        $firstarr['count'] = $secondarray[$i];
        $i++;
    }
 [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
         )

 )

另一个选项:

$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];
}