数组推送仅在使用值预定义数组时有效

时间:2019-06-24 15:08:10

标签: php arrays

我希望创建一个数组,该数组每次运行PHP脚本时都以一个随机数增长。如果我确信[$_SESSION["my_array"]的值是预定义的,那么它在每个脚本回合中都会增加。

但是,如果我不预先定义上述数组,则将创建一个随机数,但该数组的存储位数不会增加。

问题:是否可以避免在开始时填充数组?我希望数组从空开始。

<pre>

    <a href="session_destroy.php">Destroy session</a>

    <?php
        session_start();

        $_SESSION["my_array"] ?? [];
        $my_array = $_SESSION["my_array"];

        $new_random_value = rand(1, 6);

        array_push($my_array, $new_random_value);

        $_SESSION["my_array"] = $my_array;


        var_dump($my_array);

        var_dump($_SESSION);

    ?>  

我的[destroy_session]文件:

<?php

    session_start();
    $_SESSION = array();
    session_destroy();

    var_dump($_SESSION);

2 个答案:

答案 0 :(得分:2)

您没有初始化会话数组,必须像这样初始化它:

$_SESSION["my_array"] = $_SESSION["my_array"] ?? [];

否则,您的数组中没有起始值,这就是您的推送不能使数组增长的原因。

答案 1 :(得分:0)

<?php
    session_start();

    $my_array = $_SESSION["my_array"];
    if(!is_array($my_array)) {
        $my_array = array();
    }

    $new_random_value = rand(1, 6);
    array_push($my_array, $new_random_value);
    $_SESSION["my_array"] = $my_array;

    var_dump($my_array);
    var_dump($_SESSION);

?>