将用户输入与PHP数组进行比较

将用户输入与PHP数组进行比较,php,Php,对于我正在进行的一个小项目,我希望用户能够使用用户名注册帐户,但我不想配置数据库,即我只想将用户输入的用户名与PHP数组进行比较 <?php $a=array("user1","user2"); for($a =0; $x<$arrlength; $a++){ if($username == $a){ //i want to say if $username is in array alert this and do nothing $echo print a new usernam

对于我正在进行的一个小项目,我希望用户能够使用用户名注册帐户,但我不想配置数据库,即我只想将用户输入的用户名与PHP数组进行比较

<?php
$a=array("user1","user2");
for($a =0; $x<$arrlength; $a++){
if($username == $a){ //i want to say if $username is in array alert this and do nothing
$echo print a new username, already taken;
return false;
else(
array_push($a,username);?>

您可以在数组中使用

if (in_array($username, $a){
  ...
}

您可以简单地使用
in_array()
函数:

<?php
$usernames = array("user1", "user2", "user3", "user4");

if (in_array("username_from_user_input", $usernames)) {
    echo "Got Username";
}else{
    echo "Username not found"
}

?>

如果要跨请求保存已注册的帐户,必须将它们存储在文件或数据库(或其他东西)中,因为脚本从一开始就在每个请求上运行

您也可以使用in_数组函数,而不是在数组上循环。()


要存储用户名,请查看文件函数。(例如,写入文件,文件获取内容或文件(..)读取文件)。(对于真正的项目,请确保锁定文件以防止竞争条件。)

尝试其他用户的解决方案,但您可以结合Traits

您可以创建一个名为
VerifyUser
Trait,其中包含以下内容:

trait VerifyUser {
    public function verifyUser($user){
        if (in_array($username, $usersArray)){
            echo $username . "is already taken";
        }else {
            array_push($usersArray, $username);
        }
    }
}
如果您在OOP环境中工作,请不要忘记将自定义数组添加到类中。在
使用VerifyUser
指令中添加此特征


迟来的回答,但因为我心情不好,下面是:

echo (in_array("someuser", array("user1","user2"))) ? "Got Username" : "Username not found";

如果要永久存储用户,则仍然需要将用户列表存储在某个位置。数据库是最好的方式。但是,如果您真的不想使用数据库,那么您必须将其存储在一个平面文本文件中。您可以在文件末尾执行类似于
file\u放入内容('users.txt',序列化($a))
的操作,以将$a的内容存储在users.txt中。然后在文件的开头执行
$a=unserialize(file_get_contents('users.txt') S/He也应该考虑阻止对服务器上的文件的访问。谢谢乔治,这正是我所期待的,这是有意义的。这只是我自己做的一个小测试(我是PHP新手),谢谢你的帮助!有时候,最简单的答案就是最好的答案。我认为这对于刚接触PHP的人来说太高级了。没错,但我只回答了这个需要,可能对其他新手或高级用户有用。答案是使用
in_array
函数,但我只展示了一种改进方法,以促进代码的可重用性。我投了票,因为这是一种有效的替代方法(更不用说我也喜欢Trialum;-)
echo (in_array("someuser", array("user1","user2"))) ? "Got Username" : "Username not found";