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

236
25 февраля 2017, 07:12

Добрый день, ребят. Есть массив, назовем его 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. Почему?)

Answer 1

В доках написано, что:

Внимание Эта функция может возвращать как boolean FALSE, так и не-boolean значение, которое приводится к FALSE. За более подробной информацией обратитесь к разделу Булев тип. Используйте оператор === для проверки значения, возвращаемого этой функцией.

Соответственно, когда попадается первый элемент, возвращается ключ под номером 0. И в виду неявного преобразования 0 в булев тип, получается конструкция вот такого вида:

if (false) { ....

вот он и не находит ничего.

Следовательно. Надо писать либо так:

if(array_search($article['id'],$UserArticleList) !== false){...

либо использовать in_array:

if(in_array($article['id'],$UserArticleList)){...
Answer 2
foreach($ArticleList as $article){    
    if(in_array($article['id'],$UserArticleList)){
        do some...
    }
}

Если также необходимо сравнивать типы, добавьте true:

in_array($article['id'],$UserArticleList,true)
Answer 3

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

<?php
foreach($ArticleList as $article){
    if(in_array($article['id'],$UserArticleList)){
    continue;
     //Продолжаем обрабатывать запись
    }
?>
READ ALSO
не работает controller в Angularjs

не работает controller в Angularjs

В приложении вызываю окно отправки формы, пытаюсь передать в нее контроллер, но он не передается, в чем ошибка?

416
Как исправить скрипт на JS?

Как исправить скрипт на JS?

Есть скрипт помогающий оформить код при редактировании https://jsfiddlenet/L5qhzdh7/

304
Плагин jQuery Waypoints не работает

Плагин jQuery Waypoints не работает

Скачала плагин jQuery WaypointsНе понимаю, как подключить

588
Js, как получить this класса в методе без bind?

Js, как получить this класса в методе без bind?

Как получить this класса, внутри метода класса, не прибегая к bind? Тк в этом методе нужен свой this

244