Как проверить наличие глубокого значения массива

Я хочу быстро определить, присутствует ли ключ в массиве, чтобы избежать ошибки.

Например, у меня может быть такой массив

$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".

Ответы

Ответ 1

Следующее будет работать так, как вы ожидаете:

if(isset($a['a']['b']['c']))

Если какой-либо из этих элементов undefined, isset() вернет false.

Ответ 2

В комментариях array_search у них есть код для многомерного поиска. Это может помочь.