За последние 24 часа нас посетили 18772 программиста и 1702 робота. Сейчас ищут 879 программистов ...

Возникает какая-то ошибка в array_filter

Тема в разделе "PHP для новичков", создана пользователем Great_DUKE, 24 янв 2017.

  1. Great_DUKE

    Great_DUKE Новичок

    С нами с:
    2 ноя 2015
    Сообщения:
    106
    Симпатии:
    0
    У меня есть гигантский массив, в котором нужно найти совпадения. Вот небольшая часть массива
    PHP:
    1. $arr = array( "applist"=> array("apps"=> array( array("id"=>730, "name"=>"name") ) ) );
    И есть код с функцией array_filter
    PHP:
    1. $numb = 730;
    2.  
    3. print_r(array_filter($arr['applist']['apps'], function($a){ if($a['appid'] == $numb) echo "+1"; return $a["appid"] == $numb; }));
    Выводит пустой массив, и "+1" не выводиться.

    Но если я сделаю так

    PHP:
    1. print_r(array_filter($arr['applist']['apps'], function($a){ if($a['appid'] == 730) echo "+1"; return $a["appid"] == $numb; }));
    То возвращает то, что нужно, и выводит "+1". Я не могу понять, в чем проблема, почему при сравнении $a['appid'] с $numb возвращает false, а при сравнении с 730 возвращает true?
     
  2. alexblack

    alexblack Старожил

    С нами с:
    20 янв 2016
    Сообщения:
    640
    Симпатии:
    381
    Вероятнее всего тебе нужно в анонимной функции отнаследовать $numb
    Код (Text):
    1. $example = function () use ($numb) {
    2.     var_dump($numb);
    3. };