数组中的PHP不能正常工作?

数组中的PHP不能正常工作?,php,Php,所以我想看看一组数字是否在一个数组中 array(3) { [0]=> array(2) { ["account_ID"]=> string(10) "1781890863" [0]=> string(10) "1781890863" } [1]=> array(2) { ["account_ID"]=> string(10) "2093832999" [0

所以我想看看一组数字是否在一个数组中

array(3) { 
     [0]=> array(2) { 
        ["account_ID"]=> string(10) "1781890863" 
        [0]=> string(10) "1781890863" 
      } 
     [1]=> array(2) { 
        ["account_ID"]=> string(10) "2093832999" 
        [0]=> string(10) "2093832999" 
      } 
     [2]=> array(2) { 
        ["account_ID"]=> string(10) "2147483647" 
        [0]=> string(10) "2147483647" } 
      } 
我有数组,值都在那里,一切都很好。但当我比较使用in_数组时,它返回false。我不知道为什么

class DB(){

    public function getAllID(){
        $result_row = $this->accessDB( 'SELECT account_ID FROM users;');
        return $result_row; 
    }
}
这就是我用来访问数据库并返回数组的函数,然后

$app = new DB();
if(isset($_GET['user'])){
    if(in_array($_GET['user'],$app->getAllID())){
        include('account.php');
        echo 'Account DOES exist';
    } else {
        var_dump($app->getAllID());
        echo '<br/>'.$_GET['user'].' does NOT exist.';
    } 
}
$app=new DB();
if(isset($\u GET['user'])){
if(在数组($\u GET['user'],$app->getAllID())中){
包括('account.php');
echo“账户确实存在”;
}否则{
变量转储($app->getAllID());
回显“
”。$\u GET['user']”不存在; } }

有人知道为什么我的代码在这里不起作用了吗?也许我只是访问数据库时出错了?

你需要遍历
$app->getAllID()
,因为如果
$\u GET['user']
在那里,它就会出现在
$app->getAllID()[0]
$app->getAllID()[1]
等等


实际上,您应该在带有WHERE子句的查询中检查
$\u GET['user']
,如果存在则返回true,如果不存在则返回false。为什么查询并返回所有
帐户ID
s只是为了检查是否存在一个帐户ID?

您的方法返回的是assoc数组,而不是int/string数组(您的检查是在该数组上进行的)

最简单的解决方案-将帐户ID向上拉一级

public function getAllID(){
    $result_row = $this->accessDB( 'SELECT account_ID FROM users;');
    return array_map(function($entry) { return $entry['account_ID']; }, $result_row); 
}
更好的解决方案-使用DB查询进行验证:

// must escape $userId before doing query or you are vulnerable to SQL injection

$this->accessDB("SELECT count(account_ID) FROM users WHERE account_ID = {$userId} LIMIT 1");

拉取查询结果的函数将返回多维数组。您可以在数组中循环以确定
$\u GET['user']
是否在中的每个数组中,或者更改提取用户ID的函数

在函数中,通过查询结果循环并构建数组:

$user_ids = array();
foreach ($result_row as $record) {
    $user_ids[] = $record['account_ID'];
}
return $user_ids;

这将创建一个用户ID数组。然后您可以在数组()中使用
来确定用户id是否存在。

变量转储的内容($app->getAllID());看起来像?返回$result\u行;将返回一个关联数组,因此您尝试的方式将无法使用
var_dum($app->getAllID())
在上面。是$\u GET['user']0、1或2的值吗?$\u GET['user']的值应该是数组的一个项。当它被设置为其中一项时返回false,当它被设置为数组中的数字以外的数字时返回false。这是一个很好的解决方案。使用数组映射比我发布的答案更清晰。我还喜欢您提到的验证特定用户而不是查询所有用户ID。如果我要使用DB查询进行验证,我是否仍会返回
数组映射
,还是返回
$result\u row
?因为查询只返回一行中的一个字段(
计数
),我会将该值转换为
bool
。使用您给出的计算值的var格式,
return(1=$result\u row[0][0])应该适用于
isUserFound($userId)