Как пройтись по массиву в php
Суть задания такая. В форме мы передаем в метод POST название домена. Так же у нас имеется база данных с черным списком доменов. И мы должны проверить, будет ли $_POST['domain_name'] == row['name'], структура массива $ row у нас примерно такая:
Array ( [id] => 1 [name] => testblacklist.com ) Array ( [id] => 2 [name] => qwerty.ru ) Array ( [id] => 3 [name] => mainmain.ru )
Вот пытался реализовать вот так, но не вышло:
function black_list($domain_name)
{
$black_l = array();
$mysqli = new mysqli('localhost', 'root', '', 'wordpress');
$query = $mysqli->query('SELECT * FROM black_list');
if($query->num_rows) {
for ($i = 0; $i < $query->num_rows; ++$i) {
$row = $query->fetch_array(MYSQLI_ASSOC);
if($row['name'] == _POST['domain_name'])
return -1;
}
}
return 0;
}
Эта функция вызывает в другой функции, где мы передаем $domain_name
Ответы (1 шт):
Правильно @Jean-Claude подсказывает.
Вся работа сводится с одним именем домена к запросу вида:
SELECT COUNT(1) as cnt FROM black_list WHERE name = 'УКАЗАННЫЙ ДОМЕН';
И потом посмотреть значение cnt и вернуть результат. Типа return $cnt > 0
При сравнении всех доменов сразу вся работа сводится к этому:
Берём весь список доменов из запроса
$domainNames = array_column($arrayFromRequest, 'domain_name');Делаем запрос вида
SELECT COUNT(1) as cnt FROM black_list WHERE name IN ('СПИСОК', 'ИМЁН', 'ЧЕРЕЗ', 'ЗАПЯТУЮ');Смотрим значение
cntи возвращаем результат. Типаreturn $cnt > 0