我有一个像这样的PHP数组(没有语法):
array
(
['one'] => array (
['wantedkey'] => 5
['otherkey1'] => 6
['otherkey2'] => 7
)
['two'] => => array (
['otherkey1'] => 5
['otherkey2'] => 6
['wantedkey'] => 7
)
['three'] => => array (
['otherkey1'] => 5
['wantedkey'] => 6
['otherkey2'] => 7
)
)
如果我使用的是'wantedkey'
,那么仅使用array_walk_recursive
键的元素打印值的最佳方法是什么?
谢谢!
答案 0 :(得分:5)
不会有这样的工作吗?
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
应该可以正常工作。
答案 1 :(得分:0)
我也可能在这里做些什么,但为什么不只是对它们进行预测?
foreach($myarray as $subarray) {
echo $subarray['wantedkey'];
}
不会直接回答您原来的问题,因为它没有使用array_walk_recursive
,但它似乎会以较低的复杂性执行您的要求。我误解了吗?