也许in_array()确实有效。该函数返回true找到该项目,并返回false否则。在OP的代码中,当in_array()返回false时,if-conditional失败表明搜索字符串不在数组中。但是,如果你知道它应该在那里,那么代码中的另一点可能会失败。另外,虽然mysql已被弃用,并且所有PHP开发人员都应该切换到mysqli,但有些人没有这种奢侈品,必须与他们的工作场所规定一致。这里的问题不是mysql,而是需要注意手册关于基本测试的建议。以下是主要来自于人工代码(见here):
<?php
error_reporting(E_ALL);
$result = null;
$res = null;
$link = mysql_connect('localhost', 'root', '')
or die('Could not connect: ' . mysql_error());
mysql_select_db('exp') or exit('Could not select database');
$query = "SELECT * FROM countries WHERE id=0";
$result = mysql_query($query) or exit('Query failed: ' . mysql_error());
$line = mysql_fetch_array($result, MYSQL_ASSOC);
if (in_array("US", $line)) {
echo "in array\n";
}
var_dump($line);
// Free resultset
mysql_free_result($result);
此代码错误,当我跑出来,因为我的国家表不包含零的ID。因此,$ result不包含数据数组 - 它的值为false。所以,in_array()返回false。如果我更正了查询,那么代码运行良好。
注意:启用error_reporting()时,在尝试调试代码时会非常有帮助。
**停止**使用不推荐使用的'mysql_ *'API。使用'mysqli_ *'或'PDO' – Jens
'Mysql'已被弃用。使用'mysqli'。 –
使用'mysqli'并显示'$ stylesIndex'的数组结构。 – Virb