将值放在 array_walk_recursive() 之外的数组中
Put values in array outside of array_walk_recursive()
我想通过嵌套的 JSON 对象递归地查找名为 'image' 的键,并将它们的值(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
都是整数,而它们实际上应该是像 'image'、'title' 这样的字符串等来自 JSON 对象,我想?
这是实际的 JSON 数据: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);
我想通过嵌套的 JSON 对象递归地查找名为 'image' 的键,并将它们的值(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
都是整数,而它们实际上应该是像 'image'、'title' 这样的字符串等来自 JSON 对象,我想?
这是实际的 JSON 数据: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);