【发布时间】:2021-09-07 15:16:38
【问题描述】:
背景
这是一个 WordPress 插件开发问题。
有一个 API 在数组中返回动态 url 地址:
array(4) {
[0]=>string(22) "https://t.somedomain.com"
[1]=>string(20) "https://somedomain.com"
[2]=>string(23) "http://192.168.2.209/km"
[3]=>string(23) "http://somedomain2/km"
....
}
我已经能够重新遍历上面的数组并将其保存到 php $urls 中,
上面的每个url地址都可以在GET它之后返回一个JSON响应,就像我GET一个url它会响应如下:
{
"name":"HR",
"floor":3,
"staff": [
{ "name":"John", "info":[ "Java", "Google", "Market" ] },
{ "name":"Alex", "info":[ "PHP", "Swift", "Market" ] },
{ "name":"Duke", "info":[ "HTML", "Market" ] }
]
}
目标
从所有url中获取所有json内容并合并为一个,并将这些json解码,以便php操作这些数据。
目前的进展
由于现在所有 url 都存储在变量 $urls 中,我可以使用 foreach() 来获取所有 $urls 中的 JSON 内容。
foreach ( $urls as $url ){
$response = wp_remote_retrieve_body( wp_remote_get( $url ) );
$obj = json_decode( $response );
// var_dump( $obj );
}
这将返回所有 url 的结果,但一一分开。
因为url会发生变化,而且url可能会很多,所以不宜使用:
array_merge($array1, $array2);
问题
有没有可能将每个$response(json) 合并为一个?
或者有没有可能将每个解码的 php 对象合并为一个?
欢迎提出任何建议,感谢您对此的关注。
【问题讨论】:
-
您应该合并解码的响应,而不是 JSON。
-
您希望合并后的结果是什么样的?它应该如何处理结果中的重复键?
-
@Barmar 对!谢谢!但是怎么做呢?
-
@Barmar 在我的情况下不会有重复的,谢谢你我会挖掘链接:)