如何将一个数组与值合并到一个带有stdClass对象的数组中?

时间:2015-05-15 10:47:05

标签: php arrays multidimensional-array array-merge

我有两个数组,正在寻找合并它们的方法。标准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
        )
)

4 个答案:

答案 0 :(得分:5)

这应该适合你:

只需使用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
        )

)

答案 1 :(得分:2)

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

 )

答案 2 :(得分:0)

很简单

代码:

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

答案 3 :(得分:0)

另一种选择:

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