在PHP中为多维数组中的每个数组添加元素的最佳方法

时间:2012-01-17 05:53:46

标签: php arrays multidimensional-array

我想在我的多维数组中为每个数组添加一个元素。

我的数组是这样的:

 Array
(
    [0] => Array
        (
            [RatingFactorPreferenceID] => 10
            [PreferenceID] => 45
            [RatedValue] => 1
            [CreatedOn] => 1326779061
            [CreatedBy] => 25
        )

    [1] => Array
        (
            [RatingFactorPreferenceID] => 20
            [PreferenceID] => 45
            [RatedValue] => 2
            [CreatedOn] => 1326779061
            [CreatedBy] => 25
        )

)

我想将[RatingID] => 2添加到两个数组中,然后我的最终数组看起来像:

 Array
(
    [0] => Array
        (
            [RatingID] => 2
            [RatingFactorPreferenceID] => 10
            [PreferenceID] => 45
            [RatedValue] => 1
            [CreatedOn] => 1326779061
            [CreatedBy] => 25
        )

    [1] => Array
        (
            [RatingID] => 2
            [RatingFactorPreferenceID] => 20
            [PreferenceID] => 45
            [RatedValue] => 2
            [CreatedOn] => 1326779061
            [CreatedBy] => 25
        )

)

我可以遍历我的数组并执行此操作,有更好的方法吗?

3 个答案:

答案 0 :(得分:2)

$array = array_map(function ($a) { return $a + array('RatingID' => 2); }, $array);

这仍然在循环,但在幕后,如果您愿意的话 你也可以使用array_walk,但这实际上只是用不同的语法伪装成循环。

答案 1 :(得分:1)

@deceze的答案很好但是实例化第二个数组并使用数组联合运算符(+)是不必要的复杂。保持简单:

$new_array = array_map(
  function( $inner_array ) {
    $inner_array[ 'RatingID' ] = 2;

    return $inner_array;
  },

  $orig_array
);

答案 2 :(得分:0)

我认为array_walk是最好的选择

$array = array(
            array(
                'RatingFactorPreferenceID' => 10,
                'PreferenceID' => 45,
                'RatedValue' => 1,
                'CreatedOn' => 1326779061,
                'CreatedBy' => 25
            ),
            array(
                'RatingFactorPreferenceID' => 20,
                'PreferenceID' => 45,
                'RatedValue' => 2,
                'CreatedOn' => 1326779061,
                'CreatedBy' => 25,
            )
        );

function AddAtTop(&$act_array,$key){

    $act_array = array_merge(array('RatingID'=>2), $act_array);
}

array_walk($array, 'AddAtTop');

echo '<pre>';
print_r($array);
echo '</pre>';

这应该适合你。