Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在数组中存储字符串?-PHP_Php_Html_Arrays_Forms - Fatal编程技术网

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

如何在数组中存储字符串?-PHP,php,html,arrays,forms,Php,Html,Arrays,Forms,我试图将字符串存储在数组中,但它无法保存数组: <?php session_start(); $username = $_POST["username"]; $password = $_POST["password"]; $users = array(); $passes = array(); /*if (isset($_SESSION['users'])) { $users = unserialize($_SESSION[

我试图将字符串存储在数组中,但它无法保存数组:

 <?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存储在用户的计算机上,会话存储在服务器上。

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

session_start();

$_SESSION['users'][] = 'Hello';

var_dump($_SESSION['users']);

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

您可以像这样使用array\u push:$user=array\u push$user,$username;
就这些

你问题的前提是错误的。当您进行研究时,尝试找出如何存储持久值提示:它被称为“会话”。PHP在运行时不会保存任何变量。您需要将VAR保存在网站上的某个地方,或者保存在文件或数据库中。你前面有很多谷歌搜索。我认为使用cookie或session,session是更好的方法,但是我如何向数组中添加字符串并使其保持不变呢?但是我不明白…我添加了一些代码,允许您在数组末尾添加新元素。你明白我们为什么要在这里开会吗?该死,还是不行!我将问题中的代码更新为我正在使用的代码,你仍然能理解吗?@user3504199你有错误吗?我仍然不确定你到底想做什么。我想做的是在会话中保存用户名和密码,这样当他/她注册时,他们就可以登录,它将存储通行证和用户名。不,我没有出错。