如果我不使用MySQL,PHPin_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中选择 red,绿色,blue,yellow 时,in_array无法执行相同操作。在本例中,如果我回显$array,则Web浏览器中会显示 red绿色blue yellow,因此我知道 blue 在$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";}
}
?>
如果任何人有任何提示或建议,我当然会很感激。
2条答案
按热度按时间voase2hg1#
在您的SQL版本中,您会得到一条记录,其中应该存在一个名为
colors
的字段。但是这个字段包含一个字符串(可能是一个逗号分隔的列表,比如
blue,red,...
),* 而不是一个数组 *。因此,当执行
in_array($keyword, $array)
时,您会触发一个PHP错误(但可能您当前没有设置error_report来显示它们)。你 * 必须 * 做的是把你在
colors
字段中得到的内容转换成一个数组。在这种情况下,它就像上面提到的:
或者任何合适的,这取决于
colors
字段结构。zzzyeukh2#
我用了这个答案。而且它仍然完美地工作。
如果你有一个只有值的数组,你应该使用in_array函数作为这个例子:
如果你有一个带键的数组,你应该像下面这样使用isset函数: