PHP:具有特定键的数组元素

atp*_*atp 1 php recursion multidimensional-array

我有一个像这样的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
                     )
)
Run Code Online (Sandbox Code Playgroud)

'wantedkey'如果我正在使用,那么仅使用键的元素打印值的最佳方法是array_walk_recursive什么?

谢谢!

Kit*_*son 5

不会像这样的工作吗?

function test_print($item, $key) {
  if ($key === 'wantedkey') {
    print $item;
  }
}

array_walk_recursive($myarray, 'test_print');
Run Code Online (Sandbox Code Playgroud)

或者我错过了你的要求?[我想我是]

因此,我能够处理您正在寻找的东西的最佳方式是:

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');
Run Code Online (Sandbox Code Playgroud)

问题array_walk_recursive是它实际上并没有告诉你你在数组中的位置.理论上你可以应用与array_walk_recursive上面类似的东西,但由于你只提供了一个二维数组,使用array_walk应该可以正常工作.