За последние 24 часа нас посетили 72145 программистов и 1653 робота. Сейчас ищут 876 программистов ...

Функция не видит переменную

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

  1. Great_DUKE

    Great_DUKE Новичок

    С нами с:
    2 ноя 2015
    Сообщения:
    106
    Симпатии:
    0
    Есть код
    PHP:
    1. function change($id){
    2. $all = array(array("app_id"=>730));
    3.  
    4. $arr = array_filter($all,function($a){ global $id; return $a["app_id"]==$g_id; });
    5. }
    6. change(730);
    И в итоге $arr остается пустым массивом, я не могу понять в чем может быть проблема.
     
  2. Dmitriy A. Arteshuk

    Dmitriy A. Arteshuk Активный пользователь

    С нами с:
    19 янв 2012
    Сообщения:
    2.445
    Симпатии:
    66
    Адрес:
    Зеленоград
    прошу прощения за свою бестолковость....но можно ли мне хотя бы намекнуть на то что делает эта функция?
     
  3. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    PHP:
    1. <br />
    2. <b>Notice</b>:  Undefined variable: g_id in <b>[...][...]</b> on line <b>4</b><br />
     
  4. Dmitriy A. Arteshuk

    Dmitriy A. Arteshuk Активный пользователь

    С нами с:
    19 янв 2012
    Сообщения:
    2.445
    Симпатии:
    66
    Адрес:
    Зеленоград
    @denis01 То что там нет этой переменной это и так понятно, но что она делает???
     
  5. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    @Dmitriy A. Arteshuk думаю он хочет отфильтровать массив и оставить только одно значение которое указал в аргументе
    и работающий вариант, примерно такой:
    PHP:
    1. <?php function change($id){
    2. $all = array(array("app_id"=>730));
    3. $arr = array_filter($all,function($a) use ($id) { return $a["app_id"]==$id; });
    4. var_dump($arr);
    5. }
    6. change(730);
    но всё это попытки телепатии и выводы могут быть ошибочные
     
  6. Dmitriy A. Arteshuk

    Dmitriy A. Arteshuk Активный пользователь

    С нами с:
    19 янв 2012
    Сообщения:
    2.445
    Симпатии:
    66
    Адрес:
    Зеленоград
    isset отменили? )))
     
  7. alexblack

    alexblack Старожил

    С нами с:
    20 янв 2016
    Сообщения:
    640
    Симпатии:
    381
    Тему можно закрыть,я детально глянул и списался в пм,там была проблема в use, так как он в анонимной функции использовал переменную $g_id из вне
     
    denis01 нравится это.
  8. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    там многомерный массив, думаю из-за этого всё равно нужно будет городить цикл
     
  9. abrdabr

    abrdabr Новичок

    С нами с:
    28 янв 2017
    Сообщения:
    774
    Симпатии:
    65
    @Great_DUKE $arr же существует только в нутри функции, нужно либо вернуть return $arr; либо использовать глобальные переменные в начало функции вставить global $arr;

    и я не уверен но global $id; возможно портит результат
     
    denis01 нравится это.