也許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