如何在数组中存储字符串?-PHP


How to store string in an array? - PHP

我试图在数组中存储一个字符串,但它没有保存数组:

 <?php
    session_start();
    $username = $_POST["username"];
    $password = $_POST["password"];
    $users = array();
    $passes = array();
    /*if (isset($_SESSION['users'])) {
        $users = unserialize($_SESSION['users']);
    }
    if (isset($_SESSION['passes'])) {
        $passes = unserialize($_SESSION['passes']); 
    }*/
    if (isset($_POST['button'])) {
        $login_successful = false;
        for ($i = 0; $i < count($_SESSION['user']); $i++) {
            if ($username === $_SESSION['user'][$i] && $password === $_SESSION['pass'][$i]) {
                echo "<p style='"font-family: Open Sans'">Logged in as " .$users[$i] ."</p>";
                $login_successful = true;
                break; // no need to continue the loop here, so we break out of it
            }
        }
        if (!$login_successful) {
            echo "<p style='"font-family: Open Sans'">Login Failed</p>";
        }
    }
    else if (isset($_POST['register'])) {
        $users = array_push($users, $username);
        $passes = array_push($passes, $password);
        $_SESSION['user'] = serialize($users);
        $_SESSION['pass'] = serialize($passes);
        echo "Made your account successfully! <a href='"index.html'">Go back to login</a>";
    }
    else if (isset($_POST['userlist'])) {
        $users = unserialize($_SESSION['users']);
        $passes = unserialize($_SESSION['passes']);
        for ($i = 0; $i < count($users); $i++) { 
            echo $user[$i];
            echo $passes[$i];
        }
    }
?>

它不保存数组,只对调用它的当前页面进行更改,然后数组返回为零。

提前感谢

您似乎对PHP的工作方式有很大的误解。每次php脚本运行时,就像是第一次运行一样。因此,当脚本完成时,您的数组将从内存中删除。

但是,如果您想在请求之间携带数据,可以尝试会话。

session_start();//important
//YOUR EXISTING ARRAY
$array = array("element", "element 2", "element 3");
//ADD YOUR NEW ELEMENT TO THE ARRAY
$array = array_push( $array, "NEW ELEMENT" );
//store the new serialized (converted to string) array
$_SESSION['my_array'] = serialize( $array );
if ( isset($_SESSION['my_array']) ) {
    //grab the serialized (string version) of the array, and convert it back to an array
    $my_array = unserialize( $_SESSION['my_array'] ); //holds [0] => "el1", [1] => "el2"
}

阅读PHP手册中关于会话的更多信息。

您也可以尝试cookie或将数组存储到数据库中。只需知道cookie存储在用户的计算机上,会话存储在服务器上。

您可以使用array_push,如下所示:$user=array_prush($user,$username);仅此而已!

让我们对Ryan Smith的解决方案进行一些改进,使其更简单

session_start();
$_SESSION['users'][] = 'Hello';
var_dump($_SESSION['users']);
// if you wanna use $users, 
/*
if(isset($_SESSION['users'])) {
    $users = unserialize($_SESSION['users']);
}
*/