Страницы

Поиск по вопросам

среда, 29 января 2020 г.

Не находит элемент массива

#php


Добрый день, ребят. Есть массив, назовем его UserArticleList, вот его вардамп:

array(2) { 
[0]=> string(1) "1" 
[1]=> string(1) "2" 
}


Есть такой кусочек кода:

foreach($ArticleList as $article){
          if(array_search($article['id'],$UserArticleList)){
            continue;
             //Продолжаем обрабатывать запись
          }


Здесь циклом перебираются все записи бд($ArticleListas). Если id текущей записи есть
в массиве, то переходим к следующей итерации цикла. И все должно бы работать, но array_search
находит только элемент со значением 2. Почему?)
    


Ответы

Ответ 1



В доках написано, что: Внимание Эта функция может возвращать как boolean FALSE, так и не-boolean значение, которое приводится к FALSE. За более подробной информацией обратитесь к разделу Булев тип. Используйте оператор === для проверки значения, возвращаемого этой функцией. Соответственно, когда попадается первый элемент, возвращается ключ под номером 0. И в виду неявного преобразования 0 в булев тип, получается конструкция вот такого вида: if (false) { .... вот он и не находит ничего. Следовательно. Надо писать либо так: if(array_search($article['id'],$UserArticleList) !== false){... либо использовать in_array: if(in_array($article['id'],$UserArticleList)){...

Ответ 2



foreach($ArticleList as $article){ if(in_array($article['id'],$UserArticleList)){ do some... } } Если также необходимо сравнивать типы, добавьте true: in_array($article['id'],$UserArticleList,true)

Ответ 3



А что вам мешает использовать in_array ?

Комментариев нет:

Отправить комментарий