Поиск ключей многомерного массива с использованием другого массива

Есть ли элегантный способ получения значений из массивного многомерного массива с использованием другого массива для поиска ключей?

например

$cats[A][A1][A11][A111] = $val; $cats[A][A1][A11][A112] = $val; $cats[A][A1][A12] = $val; $cats[A][A1][A12][A121] = $val; $cats[A][A2] = $val; $cats[A][A2][A21] = $val; $cats[A][A2][A22] = $val; $cats[A][A2][A22][A221] = $val; $cats[A][A2][A22][A222] = $val; 

значения доступа из $cats с использованием $keys = Array ('A', 'A2', 'A22', 'A221');

не проверяя длину $keys и делая что-то вроде …

 switch (count($keys)) { case 1: $val = $cats[$keys[0]]; break; case 2: $val = $cats[$key[0]][$key[1]]; break; case 3: $val = $cats[$key[0]][$key[1]][$key[2]]; break; ... } 

большое спасибо.