php | array_map替换

时间:2015-06-09 08:24:06

标签: php array-map

我正在寻找替换阵列的方法。 我的第一个数组如下:

$arr1 = Array
(
    [0] => stdClass Object
        (
            [values] => Array
                (
                    [0] => stdClass Object
                        (
                            [field_value] => Green
                            [count] => 0
                        )

                    [1] => stdClass Object
                        (
                            [field_value] => Red
                            [count] => 0
                        )
                )

        )
    [1] => stdClass Object
        (
            [values] => Array
                (
                    [0] => stdClass Object
                        (
                            [field_value] => Plastic
                            [count] => 0
                        )

                    [1] => stdClass Object
                        (
                            [field_value] => Metall
                            [count] => 0
                        )
                )

        )

我的第二个阵列:

$arr2 = Array
(
    [0] => 2
    [1] => 6
    [2] => 3
    [3] => 4
)

我想得到这个:

Array
(
    [0] => stdClass Object
        (
            [values] => Array
                (
                    [0] => stdClass Object
                        (
                            [field_value] => Green
                            [count] => 2
                        )

                    [1] => stdClass Object
                        (
                            [field_value] => Red
                            [count] => 6
                        )
                )

        )
    [1] => stdClass Object
        (
            [values] => Array
                (
                    [0] => stdClass Object
                        (
                            [field_value] => Plastic
                            [count] => 3
                        )

                    [1] => stdClass Object
                        (
                            [field_value] => Metall
                            [count] => 4
                        )
                )

        )

我尝试过使用array_map函数,但没有成功。

array_map(function($a,$b){$a = $b; return $a;}, $arr1, $arr2);

谢谢!

4 个答案:

答案 0 :(得分:1)

停止编写foreach循环,使用array_map:

<强> http://www.namasteui.com/array_map-stop-writing-foreach-cycles/

答案 1 :(得分:0)

根据需要创建自己的函数,并根据需要进行自定义,请参阅下面的示例:

function buildMyArray($array1, $array2)
{   

    foreach($array1[0]->values as $key => $value){
        $array1[0]->values[$key]['count'] = $array2[$key];
    }

    return $array1;
}

你可以这样称呼:

$result = buildMyArray($arr1, $arr2);

答案 2 :(得分:0)

$array=$arr[0]->values;
$new_array=array(); 

foreach($array as $key=>$val)
{
    $new_array[$key]=$val;
    $new_array[$key]->count=$arr2[$key];

}


$result=array();
$result[0]->values=$new_array;  

答案 3 :(得分:0)

如果您想使用array_map,那么应该如下所示:

$arr1[0]->values = array_map(function($v, $k) use ($arr2)  {
    // if not found in $arr2, remain the original value.
    $v->count = isset($arr2[$k]) ? $arr2[$k] : $v->count;
    return $v;
}, $arr1[0]->values, array_keys($arr1[0]->values));
相关问题