【问题标题】:array_push adds another empty array after adding my arrayarray_push 添加我的数组后添加另一个空数组
【发布时间】:2020-07-02 20:28:07
【问题描述】:

我正在研究一种填充空数组的方法。

我有这个代码:

$array = array();
$month = 'enero';
array_push($array, $array[$month] = array('01'));
array_push($array['enero'], '02');
print_r($array);

这会返回:

Array
(
    [enero] => Array
        (
            [0] => 01
            [1] => 02
        )

    [0] => Array
        (
            [0] => 01
        )

)

数组[0] 不知从何而来,我不知道该怎么办。我试过了

array_push($array['enero'], '02');

但它不起作用。我怎样才能得到预期的结果:

Array 
( 
    [enero] => Array 
        ( 
            [0] => 01 
            [1] => 02 
        )
)

【问题讨论】:

    标签: php arrays multidimensional-array associative-array


    【解决方案1】:

    如有疑问,请避免使用array_push,而只需使用[] 表示法。它的优点是自动创建不存在的子数组(所以不需要使用$array[$month] = array();):

    $array = array();
    $month = 'enero';
    $array[$month][] = '01';
    $array[$month][] = '02';
    print_r($array);
    

    如果你想使用array_push,你需要先创建enero元素,然后再尝试推入它:

    $array = array();
    $month = 'enero';
    $array[$month] = array();
    array_push($array[$month], '01');
    array_push($array[$month], '02');
    print_r($array);
    

    输出(两段代码):

    Array
    (
        [enero] => Array
            (
                [0] => 01
                [1] => 02
            )    
    )
    

    Demo on 3v4l.org

    【讨论】:

    • 出于好奇,你为什么用array()而不是[]
    • @ggorlen 只是个人喜好。我发现数组值周围的[] 可能会在一页代码中丢失,但array(...) 总是突出。
    • 哦....我认为这种方式行不通,因为 $array 变量将在每个循环迭代中重新分配。谢谢。
    猜你喜欢
    • 2018-10-21
    • 1970-01-01
    • 1970-01-01
    • 2011-05-15
    • 1970-01-01
    • 2017-12-24
    • 1970-01-01
    • 2018-08-24
    • 1970-01-01
    相关资源
    最近更新 更多