从多维数组php返回值


Returning values from a multidimensional array php

我希望有更好的方法从下面的数组中返回cy_GB['value]en_GB['value]的值:

MultilingualSelectAttributeTypeOptionList Object (
    [options:MultilingualSelectAttributeTypeOptionList:private] => Array
        (
            [0] => MultilingualSelectAttributeTypeOption Object
                (
                    [error] => 
                    [id] => 7
                    [values] => Array
                        (
                            [cy_GB] => Array
                                (
                                    [id] => 13
                                    [value] => Audio described
                                )
                            [en_GB] => Array
                                (
                                    [id] => 14
                                    [value] => Audio described
                                )
                        )
                    [th] => TextHelper Object
                        (
                        )
                )
            [1] => MultilingualSelectAttributeTypeOption Object
                (
                    [error] => 
                    [id] => 3
                    [values] => Array
                        (
                            [cy_GB] => Array
                                (
                                    [id] => 5
                                    [value] => BSL signed
                                )
                            [en_GB] => Array
                                (
                                    [id] => 6
                                    [value] => BSL signed
                                )
                        )
                    [th] => TextHelper Object
                        (
                        )
                )
        )
    [error] => 
)

这就是我尝试过的。我还应该使用更有意义的名称

foreach ($selectedOptions as $row) {
    foreach ($row as $key) {
        foreach ($key as $k => $v) {
            if($k == 'cy_GB') {
                echo $v['value'];
            }
            if($k == 'en_GB') {
                echo $v['value'];
            }
        }
    }
}

我知道这种事情以前被问过很多次,所以我为此道歉。任何帮助都将不胜感激。

类似的东西可以工作:

function findKeyRec($obj, $search) {
  if( !is_array( $obj ) && !$obj instanceof Traversable ) return;
  foreach($obj as $key => $value) {
    if($key == $search) {
        echo $value['value'];
    } else {
       findKeyRec($value, $search);
    }
  }
}
findKeyRec($ar, 'cy_GB');
findKeyRec($ar, 'en_GB');

它不短,但在我看来更优雅,它应该与任何对象/数组结构一起使用。

未测试。