В следующем тексте yaml для получения имен детей , где выставлено значение true ?
INPUT
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);
}
ТЕКУЩИЙ ВЫХОД
Кэти Питер
В приведенном выше выводе Кэти является нежелательной записью.Правильный вывод должен быть Питер.
Заранее спасибо:)