这是json(它可以是1到10个响应):
{"d":[{"__type":"OperatorDataContract:http://psgi.pts.se/PTS_Number_Service","Name":"TeliaSonera Sverige AB","Number":"XXXX-XXXXX"},
{"__type":"OperatorDataContract:http://psgi.pts.se/PTS_Number_Service","Name":"TeliaSonera Sverige AB","Number":"XXXX-XXXXX"},
{"__type":"OperatorDataContract:http://psgi.pts.se/PTS_Number_Service","Name":"Tele2 Sverige AB","Number":"XXXX-XXXXX"}]}
当我有一个响应时,我有这个:
$str = file_get_contents($apilink);
$data = json_decode($str, true);
$operator = $data['d']['Name'];
然而,如果有多个答案,就像我所显示的那样,它将只是空白(可能是因为它找到了多个"Name")。你是怎么从回复中得到所有名字的?
您将得到如下多个响应:
$data['d'][0]['Name'];
$data['d'][1]['Name'];
$data['d'][2]['Name'];
试试这个:
if (count($data['d']) > 1) {
foreach($data['d'] as $result){
$operator[] = $result['Name'];
}
}
这里循环遍历数组,在一个名为$operator的数组中获取多个名称。
您需要的是foreach循环,这里是将在json响应中吐出所有名称的示例。
$json = '{"d":[{"__type":"OperatorDataContract:http://psgi.pts.se/PTS_Number_Service","Name":"TeliaSonera Sverige AB","Number":"XXXX-XXXXX"},
{"__type":"OperatorDataContract:http://psgi.pts.se/PTS_Number_Service","Name":"TeliaSonera Sverige AB","Number":"XXXX-XXXXX"},
{"__type":"OperatorDataContract:http://psgi.pts.se/PTS_Number_Service","Name":"Tele2 Sverige AB","Number":"XXXX-XXXXX"}]}';
$data = json_decode($json, true);
$operator = $data['d'];
foreach($operator as $value)
{
echo $value['Name'].'<br>';
}
希望以上是有意义的,我也建议你阅读更多关于foreach的知识,这样你就可以清楚地了解如何以迭代的方式处理数据