提问者:小点点

将关联数组添加到另一个数组中


我想将一个数组添加到另一个数组中,但是当我使用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 ) )

共2个答案

匿名用户

一个问题是您在循环中重置了$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上演示