我想将一个数组添加到另一个数组中,但是当我使用array_push时,它会覆盖前一个数组的值
<?php
$tem = ["blue","ss"];
$len = count($tem);
print_r($len);
for($i=0;$i<$len;$i++){
$data = [
'code' => $tem[$i],
'discount_type' => 'percent',
];
$a=array();
$result[$i] =array_push($a,$data);
print_r($a);
}
?>
输出为
2Array ( [0] => Array ( [code] => blue [discount_type] => percent ) )
Array ( [0] => Array ( [code] => ss [discount_type] => percent ) )
一个问题是您在循环中重置了$a
数组,因此它将只包含最后一项。 另外,由于array_push()
更新数组本身,所以您不会分配返回值(但您无论如何也不会使用$result[$i]
)。。。
所以你的代码最后会像。。。
$tem = ["blue","ss"];
$len = count($tem);
print_r($len);
$a=array();
for($i=0;$i<$len;$i++){
$data = [
'code' => $tem[$i],
'discount_type' => 'percent',
];
array_push($a,$data);
}
print_r($a);
还可以使用foreach
循环缩短代码,并在将数组添加到结果时创建数组。。。
$tem = ["blue","ss"];
$a=array();
foreach ( $tem as $t ) {
$a[] = [
'code' => $t,
'discount_type' => 'percent',
];
}
print_r($a);
您的问题是array_push
返回新数组中的元素数,而不是推送的结果。 无论如何,您不需要$a
,只需设置$result[$i]=$data
即可。 循环$result
具有所需的值后:
$tem = ["blue","ss"];
$len = count($tem);
for($i=0;$i<$len;$i++){
$data = [
'code' => $tem[$i],
'discount_type' => 'percent',
];
$result[$i] = $data;
}
print_r($result);
输出:
Array
(
[0] => Array
(
[code] => blue
[discount_type] => percent
)
[1] => Array
(
[code] => ss
[discount_type] => percent
)
)
在3v4L.org上演示