У меня есть mysql_query
до select *
из базы данных списка 'english'
и mysql_fetch_assoc
возвращает массив. Я пытаюсь найти слово 'flick'
(которое фактически существует в базе данных), используя in_array()
, если найдено 'flick'
, его не следует показывать, но он отображается. Я думаю, in_array
функция не находит слово 'flick'
. Пожалуйста, посмотрите на код ниже:PHP in_array не работает true
<?php
error_reporting(E_ALL);
require 'db.php';
function spellcheck($word)
{
$output = array();
$word = mysql_real_escape_string($word);
$words = mysql_query("SELECT `word` FROM `english` WHERE LEFT(`word`, 1) = '" .
substr($word, 0, 1) . "'");
while(($words_row = mysql_fetch_assoc($words)) && (in_array($word, $words_row)==false))
{
similar_text($word, $words_row['word'], $percent);
if($percent > 82)
{
$output[] = $words_row['word'];
}
}
return (empty($output)) ? false : $output;
}
if (isset($_GET['word']) && trim($_GET['word']) != null)
{
$word = $_GET['word'];
$spellcheck = spellcheck($word);
if ($spellcheck !== false)
{
echo '<pre>' . print_r($spellcheck, true) . '</pre>';
} else {
echo '<p>' . $word . ' spelled correctly, or no suggestions founds.</p>';
}
}
?>
<form action="" method="GET">
Check single word spelling:
<input type="text" name="word" />
<input type="submit" value="Check" />
</form>
Код возвращает:
Array (
[0] => flick
[1] => flicks
)
Но это должно быть:
"spelled correctly, or no suggestions founds."
Не используйте функции 'mysql_ *' больше. Они устарели в течение длительного времени и окончательно удаляются с помощью PHP7 в ближайшие несколько месяцев. Вместо этого используйте PDO или mysql ** i **. – TiMESPLiNTER
Спасибо. Вы считаете, что «mysql_ *» является причиной неправильного ответа? – Majid
Уважаемый @deceze, я тестирую 'mysqli_ *' и, как ни странно, ответ тот же. Это означает, что нет никакого почтения между mysl и mysqli в моем localhost xampp. – Majid