PHP: проверка значения элемента массива, когда есть вероятность, что элемент не существует - PullRequest
0 голосов
/ 20 мая 2011

Предположим, у меня есть массив $ обр. возможно , что в нем есть элемент с ключом с именем 'music' ($ arr ['music']), и я хочу проверить, равно ли это значение "классическому":

if($arr['music'] === 'classical'){
    //do something cool
}

Однако, возможно, что $ arr не имеет значения с ключом 'music'. Поэтому, чтобы избежать ошибки PHP, я делаю следующее:

if($arr['music']){
    if($arr['music'] === 'classical'){
        //do something cool
    }
}

Это кажется совершенно нелепым. По моему мнению, если $ arr ['music'] не существует, то он ОПРЕДЕЛЕННО не равен 'классическому'. Есть ли способ избежать первого тестирования, существует ли ключ перед проверкой его значения?

Ответы [ 3 ]

3 голосов
/ 20 мая 2011

Если ключ не существует, он выдаст ошибку (или предупреждение).
Таким образом, чтобы это произошло, вы должны проверить, существует ли .
ЗдесьЕсть два способа сделать это:

Вы можете проверить это, используя isset() (который будет ложным, если $arr['music'] == null):

if(isset($arr['music']) && $arr['music'] === 'classical'){ 
    //do something cool
}

Или используйте array_key_exists():

if(array_key_exists('music', $arr) && $arr['music'] === 'classical'){
    //do something cool
}
0 голосов
/ 14 мая 2016

Есть другое решение.Некоторым это не нравится, потому что он использует знак «@», но я нахожу его очень читабельным, поэтому я использую его.

if (@$arr['music'] === 'classical') ...

Вот и все.Для меня лучшее читаемое решение.

0 голосов
/ 20 мая 2011

Я думаю, array_key_exists () соответствует вашим потребностям.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...