这是一个foreach树,在解析JSON时在我的工作流程中很常见,但我不禁想到有更好的方法。我试着看一下这个,我发现有些人指的是array_walk,但我不知道这怎么会消除在foreach内部foreach内部做foreach的需要。有帮助吗?如果有更好的方法,我很乐意学习,因为这并不总是方便而且感觉很乱。
根据评论中的要求,预期的结果是为每个学位生成一个页面,但该页面的模板将使用foreach树中的所有名称变量(以及我未包含的其他一些名称变量)。我剥离了我的PHP以保持示例简单,虽然我知道我的用例会影响问题的解答方式,这就是我添加该信息的原因。
这是一些解析数组的PHP:
if (guess == numberDrawn) {
System.out.println("Congratulations, your guess is correct!");
correct = true;
} else if (guess > numberDrawn) {
System.out.println("The number is lesser, guesses made: " + i);
i++;
} else if (guess < numberDrawn) {
System.out.println("The number is greater, guess made: " + i);
i++;
}
这是JSON:
foreach ($programs as $program) {
$program_name = $program['name'];
$degrees = program['degrees'];
foreach ($degrees as $degree) {
$degree_name = $degree['name'];
$courses = $degree['courses'];
foreach ($courses as $course) {
$course_name = $course['name'];
echo $course_name;
}
}
}
答案 0 :(得分:2)
不确定这总体如何,但它会按顺序递归提取name
项目:
$result = array();
array_walk_recursive($array, function($v, $k) use(&$result) {
if($k == 'name') { $result[] = $v; }
});
print_r($result);
收率:
Array
(
[0] => undergraduate
[1] => elementary education
[2] => math
)