Php 从多维数组返回值
我希望有更好的方法从下面的数组返回Php 从多维数组返回值,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,我希望有更好的方法从下面的数组返回cy_GB['value]和en_GB['value]中的每个值: MultilingualSelectAttributeTypeOptionList Object ( [options:MultilingualSelectAttributeTypeOptionList:private] => Array ( [0] => MultilingualSelectAttributeTypeOption Ob
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');
它不短,但在我看来更优雅,并且应该适用于任何对象/数组结构
未经测试。看起来像私有财产,这个对象有getter方法吗?据我所知,我没有,我能用我尝试过的方法获得值,只是想知道是否有更好的方法?你写了
$v['value']
,但打印说明[values]
@RobMorris哦,好吧,奇怪,无论如何,你说的更好是什么意思?像一个更短的方法吗?