Ответ 1
Следующее будет работать так, как вы ожидаете:
if(isset($a['a']['b']['c']))
Если какой-либо из этих элементов undefined, isset()
вернет false.
Я хочу быстро определить, присутствует ли ключ в массиве, чтобы избежать ошибки.
Например, у меня может быть такой массив
$arr['f']['b']['g'] = array( 'a', 'b', 'c', ) ;
Или массив может не иметь никаких переменных в $arr ['f'] ['b']:
$arr['f']['x'] = array() ;
Как я могу избежать повторения в тесте, ссылаясь на (возможно) содержимое $arr ['f'] ['b'] ['g']?
if ( isset( $arr['f'] ) &&
isset( $arr['f']['b'] ) &&
isset( $arr['f']['b']['g'] ) /* ... yawn */ ) {
/* blah */
}
Должен быть способ, чтобы определить, существует ли заданное значение массива, которое я ссылаю? Кажется слишком сложным, чтобы испытать присутствие как ценности, которую я ищу, так и всей ее родословной. В некоторых случаях это имеет смысл, да, но не все.
Например: он может представлять, скажем, user- > session- > cart, где я хочу, чтобы быстро проверить, есть ли в корзине записи, без необходимости включать проверку каждого из них, существует ли пользователь, сессия существует, то существует ли тележка, затем...
Изменить: я не ищу "значение массива с ключевым именем" g "существует", поскольку "имеет значение массива с родословной f = > b = > g exist".
Следующее будет работать так, как вы ожидаете:
if(isset($a['a']['b']['c']))
Если какой-либо из этих элементов undefined, isset()
вернет false.
В комментариях array_search у них есть код для многомерного поиска. Это может помочь.