我有以下json字符串从购物车请求返回。
[{"id":19,"name":"Memory","display_name":"Memory","type":"S","values":{"url":"https:'/'/store-v035aw9.mybigcommerce.com'/api'/v2'/options'/19'/values.json","resource":"'/options'/19'/values"}},{"id":20,"name":"Add Keyboard & Mouse","display_name":"Add Keyboard & Mouse","type":"S","values":{"url":"https:'/'/store-v035aw9.mybigcommerce.com'/api'/v2'/options'/20'/values.json","resource":"'/options'/20'/values"}},{"id":21,"name":"Monitor","display_name":"Monitor","type":"S","values":{"url":"https:'/'/store-v035aw9.mybigcommerce.com'/api'/v2'/options'/21'/values.json","resource":"'/options'/21'/values"}},{"id":22,"name":"Operating System","display_name":"Operating System","type":"S","values":{"url":"https:'/'/store-v035aw9.mybigcommerce.com'/api'/v2'/options'/22'/values.json","resource":"'/options'/22'/values"}},{"id":23,"name":"AntiVirus","display_name":"AntiVirus","type":"RB","values":{"url":"https:'/'/store-v035aw9.mybigcommerce.com'/api'/v2'/options'/23'/values.json","resource":"'/options'/23'/values"}}]
我需要在上面循环并提取id"
的每个值然后为每个值调用另一个url。这将返回一个json字符串(对于id=19):
[{"id":73,"option_id":19,"label":"1GB DDR2 RAM (default)","sort_order":0,"value":"1GB DDR2 RAM (default)"},{"id":74,"option_id":19,"label":"2GB DDR2 RAM (+ $15.00)","sort_order":1,"value":"2GB DDR2 RAM (+ $15.00)"}]
And id = 20
[{"id":75,"option_id":20,"label":"No (Default)","sort_order":0,"value":"No (Default)"},{"id":76,"option_id":20,"label":"Yes (+$18)","sort_order":1,"value":"Yes (+$18)"}]
我现在需要将所有这些组合起来,并作为json数组回显。
所以问题是。1. 如何将第一个转换为数组并循环。2. 将所有返回的字符串组合成一个json数组。
MrWarby
$firstJSONArray = json_decode('[{"id":19,"name":"Memory","display_name":"Memory","type":"S","values":{"url":"https:'/'/store-v035aw9.mybigcommerce.com'/api'/v2'/options'/19'/values.json","resource":"'/options'/19'/values"}},{"id":20,"name":"Add Keyboard & Mouse","display_name":"Add Keyboard & Mouse","type":"S","values":{"url":"https:'/'/store-v035aw9.mybigcommerce.com'/api'/v2'/options'/20'/values.json","resource":"'/options'/20'/values"}},{"id":21,"name":"Monitor","display_name":"Monitor","type":"S","values":{"url":"https:'/'/store-v035aw9.mybigcommerce.com'/api'/v2'/options'/21'/values.json","resource":"'/options'/21'/values"}},{"id":22,"name":"Operating System","display_name":"Operating System","type":"S","values":{"url":"https:'/'/store-v035aw9.mybigcommerce.com'/api'/v2'/options'/22'/values.json","resource":"'/options'/22'/values"}},{"id":23,"name":"AntiVirus","display_name":"AntiVirus","type":"RB","values":{"url":"https:'/'/store-v035aw9.mybigcommerce.com'/api'/v2'/options'/23'/values.json","resource":"'/options'/23'/values"}}]');
$finalArray = array();
foreach ($firstJSONArray as $record) {
$itemID = $record->id;
// get data for each ID from your API like you have given example of 18 and 19 and store the push data to final array
$finalArray[] = "json_data_from_api_for_particular_id";
}
echo json_encode($finalArray);
- 使用json_decode
- 使用json_encode
如果您的PHP版本较旧,没有这些函数,以上页面中的注释是替代实现。
约:$inJSON = <<<EOF
[
{"id":19,"name":"Memory","display_name":"Memory","type":"S",
"values":{"url":"https:'/'/store-v035aw9.mybigcommerce.com'/api'/v2'/options'/19'/values.json","resource":"'/options'/19'/values"}},
{"id":20,"name":"Add Keyboard & Mouse","display_name":"Add Keyboard & Mouse","type":"S",
"values":{"url":"https:'/'/store-v035aw9.mybigcommerce.com'/api'/v2'/options'/20'/values.json","resource":"'/options'/20'/values"}},
{"id":21,"name":"Monitor","display_name":"Monitor","type":"S",
"values":{"url":"https:'/'/store-v035aw9.mybigcommerce.com'/api'/v2'/options'/21'/values.json","resource":"'/options'/21'/values"}},
{"id":22,"name":"Operating System","display_name":"Operating System","type":"S",
"values":{"url":"https:'/'/store-v035aw9.mybigcommerce.com'/api'/v2'/options'/22'/values.json","resource":"'/options'/22'/values"}},
{"id":23,"name":"AntiVirus","display_name":"AntiVirus","type":"RB",
"values":{"url":"https:'/'/store-v035aw9.mybigcommerce.com'/api'/v2'/options'/23'/values.json","resource":"'/options'/23'/values"}}
]
EOF;
$decode = json_decode($inJSON);
foreach ($decode as $key => $item) {
echo "Id:" . $item->id . "'n";
}
顺便说一下,您打算进行的每个URL调用的JSON输出似乎表明它返回一个JSON数组。你不能用一个URL调用你需要的所有id值来获得所有你想要发回的项目吗?对第二台服务器的多个请求可能存在性能问题,将其减少到一个调用将避免将多个响应连接在一起的需要。
否则你将不得不
- 从返回的字符串中删除开头和结尾的[]
将它们连接在一起
$finalResponse = '['。Join (',', $responses)。"]";