blackseabreathe
@blackseabreathe
brackets

Как правильно пройтись по этому простому массиву?

Привет. Походу у меня проблема с массивами. Не пойму как правильно их разбирать. Читал доку, но все равно не понял.

у меня есть строка $alreadyBlocked;
она содержит в значении имена пользователей с разделителем. Например $alreadyBlocked = 'name1|||name2|||name3|||';
после того как я получил эту строку, делаю explode()

$array = explode('|||', $alreadyBlocked); // я так понимаю эту уже не строка, а массив?


Мне нужно проверить есть ли уже в массиве такое имя, имя получаемое из формы

$utc = $_POST['username'];

foreach ($array as $name){ // разбираю
if($name === $utc){  // пробую так, но почему-то проверяется только первое имя из массива $array то есть только name1, остальные будто игнорятся

echo json_encode(['error' => 'Этот пользователь уже заблокирован'], JSON_UNESCAPED_UNICODE);
exit;
}
...
}
  • Вопрос задан
  • 56 просмотров
Решения вопроса 1
delphinpro
@delphinpro Куратор тега PHP
frontend developer
spoiler
Этот пользователь уже заблокирован


Вообще-то пользователей хранят в базе. Для бана можно было сделать отдельное поле и простым запросом проверят, забанен ли он.


$alreadyBlocked = 'name1|||name2|||name3|||';
$array = explode('|||', $alreadyBlocked);

$utc = $_POST['username'];
if ( in_array($utc, $array) ) {
  // Пользователь уже заблокирован
}


Если нужно перебрать всех, то просто уберите exit:

foreach ($array as $name){ // разбираю
 if($name === $utc){  // пробую так, но почему-то проверяется только первое имя из массива $array то есть только 
 name1, остальные будто игнорятся

 echo json_encode(['error' => 'Этот пользователь уже заблокирован'], JSON_UNESCAPED_UNICODE);
-exit;
+//exit;
}
...
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы