我是一个新手,我遇到了in_array的问题......
所以这是我的数组$ allUsers(由用户名的SQL查询接收)
Array
(
[0] => Array
(
[name] => test
)
[1] => Array
(
[name] => test2
)
[2] => Array
(
[name] => admin
)
[3] => Array
(
[name] => kingChräbi
)
现在如果新成员想要注册,我想检查这个数组是否已经存在:
if(!in_array($username,$allUsers)){....
尽管$ userUsers中没有$ username,但是如果用户存在,它也会跳到其他地方:(
使用之前设置$ username
$username = $_POST['name'];
并按原样工作(我可以毫无问题地回应它,是完全没有空格或任何东西的测试或测试2)
我真的很环顾四周,但我在这里找不到像我这样的问题......你能帮助我吗?
由于
答案 0 :(得分:2)
虽然问题本身很愚蠢,因为你必须意识到你正在使用的数组,基于PDO标签的快速解决方案如下:而不是fetchAll()
使用fetchAll(PDO::FETCH_COLUMN)
< / p>
或者,你也需要学习SQL,并且找不到用户从数据库中选择ALL是没有意义的,而是要求数据库为你找到一个用户
$stm = $pdo->prepare("SELECT * FROM table WHERE name=?");
$stm->execute(array($_POST['name']));
$user = $stm->fetch();
if ($user) { // <---HERE YOU GO
答案 1 :(得分:0)
in_array()
不适用于多维数组。您最好压平数组,然后搜索关键字。
$it = new RecursiveIteratorIterator(new RecursiveArrayIterator($arr)); //<-- Pass your array here
$new_arr = array();
foreach($it as $v) {
$new_arr[]=$v;
}
if(in_array('test',$new_arr))
{
echo "Exists !";
}
答案 2 :(得分:0)
您正在二维数组中搜索"name"
键下的值
使用array_map()
或简单foreach
循环应该有效 -
$username = "admin";
$key = "name";
if(!in_array($username,array_map(function($v)use($key){return $v[$key];},$allUsers))){
echo "No found";
}else{
echo "Found";
}
答案 3 :(得分:-1)
如果您正在使用:
while($ row = mysql_fetch_assoc($ result){
$ data [] = $ row }
删除[]以不创建多维数组。