我想递归地查找名为“image”的键的嵌套 JSON 对象,并将它们的值(URL 字符串)推送到函数外部的另一个数组中。
从其他示例和 SO 问题中,我知道我需要传递对范围外数组变量的引用,但我对 PHP 不太熟悉,这不起作用。
$response = json_decode('deeply nested JSON array from link below');
$preload = [];
array_walk_recursive($response, function($item, $key) use (&$preload) {
if ($key === 'image') {
array_push($preload, $item);
}
});
$preload
运行此函数后为空,因为$key
都是整数,我想它们实际上应该是 JSON 对象中的“图像”、“标题”等字符串?
这是实际的 JSON 数据:https://pastebin.com/Q4J8e1Z6 https://pastebin.com/Q4J8e1Z6
我误解了什么?
您发布的代码工作正常,尤其是回调函数的 use 子句中有关引用/别名的部分是绝对正确的。
它缺少问题中较弱的 json_decode 调用的第二个参数的小细节(第一行代码),需要将其设置为 true 才能一直向下拥有一个数组,以便对数组进行递归遍历所有预期字段。
<?php
$buffer = file_get_contents('https://pastebin.com/raw/Q4J8e1Z6');
$response = json_decode($buffer, true);
$preload = [];
array_walk_recursive($response, function($item, $key) use (&$preload) {
if ($key === 'image') {
$preload[] = $item;
}
});
print_r($preload);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)