Как лучше всего проверить существует ли переменная?

Тема в разделе "PHP", создана пользователем webzilapro, 30 авг 2013.

  1. webzilapro

    webzilapro

    Регистрация:
    30 авг 2013
    Сообщения:
    0
    Симпатии:
    0
    Как лучше всего проверить существует ли переменная $arr['level1']['level2']['level3']['level4']['level5'].
    Если проверять isset по каждому уровню , то if будет до Китая.
     
  2. $iD

    $iD Команда форума

    Регистрация:
    13 мар 2012
    Сообщения:
    3.350
    Симпатии:
    1.378
    1. Забить просто всё в isset ($arr['level1']['level2']['level3']['level4']['level5'])
    2. запилить в перменную $b = $arr['level1']['level2']['level3']['level4']['level5'];
    а потом if (!empty($b))
    3. через array_key_exists('first', $search_array);
     
  3. web2us

    web2us

    Регистрация:
    10 мар 2013
    Сообщения:
    0
    Симпатии:
    0
    isset($arr['level1']['level2']['level3']['level4']['level5'])

    а вот сучествует ли каждый уровень - то это другой вопрос и решается с if так как надо получить реакцию в зависимости какой уровень не определен
     
  4. webzilapro

    webzilapro

    Регистрация:
    30 авг 2013
    Сообщения:
    0
    Симпатии:
    0
    Код:
    $arr = array();
    if(isset($arr['level1']['level2']['level3']['level4']['level5']))
     
      echo '1';
     
    else
     
      echo '2';
     
    
    1. Если не существует $arr['level1'] от будет ошибка или варнинг в зависимости от настороек php.ini
    2. === PHP Notice: Undefined index: level1 in ... ===
    3. Прикольно, но это это работает. Правда нечитабельный получается код.


    зы
    что-то сегодня не получилось получить ошибку.
    Как наткнусь на нее продолжу тему.
     
  5. lex_network

    lex_network

    Регистрация:
    6 мар 2013
    Сообщения:
    28
    Симпатии:
    6
    как минимум есть count($arr); где вы получите точное количество
    а дальше уже проверяйте на соответствие вашим условиям
     
  6. $iD

    $iD Команда форума

    Регистрация:
    13 мар 2012
    Сообщения:
    3.350
    Симпатии:
    1.378
    изначально не было условия, что массив может быть разного размера. Какой вопрос - такой ответ :Smile:
     
  7. web2us

    web2us

    Регистрация:
    10 мар 2013
    Сообщения:
    0
    Симпатии:
    0
    почему будет ошибка в if(isset($arr['level1']['level2']['level3']['level4']['level5']))
    если не существует $arr['level1']
    как раз иф и не сработает