首页 文章

PHP in_array函数不能与mysqli_fetch_array一起使用

提问于
浏览
-1

如果我不使用MySQL,PHP in_array 函数按预期工作 . 在此示例中,if语句将执行并显示包含关键字blue的数组,因为 in_array 函数能够在数组中查找关键字blue .

<?php
$keyword = "blue";
$array = array("red", "green", "blue", "yellow");

if (in_array($keyword, $array)) {echo "the array contains keyword $keyword";}
else {echo "the array does not contain keyword $keyword";}
?>

从MySQL中选择红色,绿色,蓝色,黄色时, in_array 无法做同样的事情 . 在这个例子中,如果我回显$ array,在Web浏览器中显示红绿蓝黄色,所以我知道蓝色在$ array变量中 . 但是,else语句执行并显示数组不包含关键字blue .

<?php
$keyword = "blue";

$con = new mysqli('domain','username','password','database');
$sql = "select * from colors";
$sql_query = $con->query($sql);

while ($row = mysqli_fetch_array($sql_query)) {
  $array = $row['colors'];

  if (in_array($keyword, $array)) {echo "the array contains keyword $keyword";}
  else {echo "the array does not contain keyword $keyword";}
}
?>

如果有人在这里有任何提示或建议,我当然会很感激 .

1 回答

  • 1

    在SQL版本中,您将获得一个记录,其中应存在名为 colors 的字段 .
    但是这个字段包含一个字符串(可能是逗号分隔的列表,类似于 blue,red,... ),而不是数组 .

    因此,当您执行 in_array($keyword, $array) 时,您会触发PHP错误(但可能您当前没有设置error_report来显示它们) .

    你必须做的是将你在 colors 字段中获得的内容转换为数组 .
    在这种情况下,如上所述:

    $array = explode(',', $row['colors']);
    

    或者根据 colors 字段结构究竟是什么来适当的 .

相关问题