У меня есть функция фильтра, которая должна проверять два "поля" в массиве, это холодные name и description .
У меня также есть слова, хранящиеся в базе данных, и функция фильтра должна принимать определенные слова (true) и отклонять определенные слова (false).
Пример:
Каждый пост, содержащий слово car , должен быть принят.
В базе данных я сохранил следующие слова, которые принимаются:
машина (очевидно)
Не принято:
грузовая машина
Traktor
BUSS
Итак, у меня есть функция, которая должна пройти через два поля ( name и description ) в массиве, сопоставить их со словами, хранящимися в базе данных, и проверить, Поля содержат допустимое слово или любое из неприемлемых слов.
Моя функция выглядит так
$ arr = входящий массив с полями name и description .
$ a ['value'] = Если оно равно 0, слово не принимается, если оно равно 1, слово принимается.
$ a ['filter'] = Слово из базы данных.
function checkFilter($arr)
{
$name = strtolower($arr['name']);
$description = strtolower($arr['description']);
$dbh = $this->connect();
$rs = $dbh->prepare("SELECT * FROM filter");
$rs->execute();
$all = $rs->fetchAll();
foreach($all as $a)
{
if($a['value'] == 0 && strstr($name, strtolower($a['filter']), true))
{
return false;
break;
}
if($a['value'] == 0 && strstr($description, strtolower($a['filter']), true))
{
return false;
break;
}
if($a['value'] == 1 && strstr($name, strtolower($a['filter']), true))
{
return true;
break;
}
if($a['value'] == 1 && strstr($description, strtolower($a['filter']), true))
{
return true;
break;
}
}
return false;
}
Как вы уже поняли, я думаю, что если появятся какие-то из неприемлемых слов, я хочу вернуть false из функции и прервать ее. Это потому, что не имеет значения, находится ли принятое слово в name или description , если непринятое слово уже существует.
После foreach у меня возвращается false, потому что если он не может найти принятое слово (например, автомобиль), его следует отфильтровать.
Моя проблема в том, что это не работает. Кажется, он не нарушает функцию после того, как он входит в оператор if.
Как мне решить эту проблему?