Разве не нравится эта работа?
function test_print($item, $key) {
if ($key === 'wantedkey') {
print $item;
}
}
array_walk_recursive($myarray, 'test_print');
Или я что-то упускаю в ваших требованиях? [Я думаю, я был]
Так что лучшим способом справиться с тем, что вы ищете, было бы что-то вроде:
function inner_walk ($item, $key) {
if ($key === 'wantedkey2') {
print $item;
}
}
function outer_walk ($item, $key) {
if (($key === 'wantedkey1') && (is_array($item)) {
array_walk($item,'inner_walk');
}
}
array_walk($myarray,'outer_walk');
Проблема с array_walk_recursive
заключается в том, что она не говорит вам, где вы находитесь в массиве. Теоретически вы могли бы применить что-то похожее с array_walk_recursive
к вышеприведенному, но поскольку вы представили только двумерный массив, использование array_walk
должно работать просто отлично.