【发布时间】:2011-12-15 08:00:52
【问题描述】:
在以下 yaml 文本中检索子项的名称其中暴露为真?
输入
parent:
child1:
units:
machine: 1
name: Cathy
relation: daughter
boolean: true
child2:
exposed: true
units:
machine: 2
name: Peter
relation: son
boolean: false
预期输出
彼得
当前代码
//input
$yaml = <<<EOD
parent:
child1:
units:
name: Cathy
relation: daughter
child2:
exposed: true
units:
name: Peter
relation: son
EOD;
//convert to array
$parsed = yaml_parse($yaml);
//get all values from specific key in a multidimensional array
var_dump(array_value_recursive('name', $parsed));
/**
* Get all values from specific key in a multidimensional array
*
* @param $key string
* @param $arr array
* @return null|string|array
*/
function array_value_recursive($key, array $arr){
$val = array();
array_walk_recursive($arr, function($v, $k) use($key, &$val){
if($k == $key) array_push($val, $v);
});
return count($val) > 1 ? $val : array_pop($val);
}
电流输出
凯茜 彼得
在上面的输出中,Cathy 是不需要的条目。 正确的输出应该是 Peter。
提前致谢:)
【问题讨论】: