array_diff()mysqli结果和while循环的问题

问题描述 投票:1回答:1

我试图比较2个数组并得到此错误。警告:array_diff():参数#1不是数组。不确定为什么我得到这个错误一个sql结果的while语句是一个数组。

为什么我会收到此错误,如何更正错误?

$dataArray = array('234534,345345,445667');

if($arrayCheck = $mysqli->prepare("SELECT FRIEND_ID FROM FRIENDS_DIR WHERE ID=? AND ONLINE=1")){
    $arrayCheck->bind_param('s', $dataA);
    $arrayCheck->execute();
    $arrayCheck->bind_result($FidS);
    $arrayCheck->store_result();
    if($arrayCheck->num_rows > 0){
        while ($arrayCheck->fetch()) {
            if (array_diff($FidS, $dataArray)){
                $res = "NoSame";
            }
        }
    }
}
echo $res;
php arrays
1个回答
1
投票

您收到此错误是因为$FidS不是数组而是数字或字符串(取决于您的数据库表定义)。

请注意,您的SQL查询返回FRIEND_ID而不是数组 - 如果您想使用array_diff将代码更改为:

if($arrayCheck->num_rows > 0){
    $resSqlData = [];
    while ($arrayCheck->fetch()) {
        $resSqlData[] = $FidS;
    }
    if (array_diff($resSqlData , $dataArray)){
            $res = "NoSame";
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.