我想在我的多维数组中为每个数组添加一个元素。
我的数组是这样的:
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
)
)
我可以遍历我的数组并执行此操作,有更好的方法吗?
答案 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>';
这应该适合你。