我得到一个Json回复:
$response = curl_exec($rest);
$json = json_decode($response, true);
我设法通过以下方式获取其值(字符串)
$foundUserId=$json['results'][0]['userId'];
$foundName=$json['results'][0]['name'];
$foundPhoneNum=$json['results'][0]['phoneNumber'];
但最后一个值 - phoneNumber
是字符串数组。
如果我尝试循环它,我什么都没有(虽然数组在Json中存在)
foreach ($foundPhoneNum as &$value)
{
print_r($value);
}
我做错了什么?
编辑: 杰森:
Array ( [results] => Array ( [0] => Array ( [action] => message [createdAt] => 2015-11-21T09:36:33.620Z [deviceId] => E18DDFEC-C3C9 [name] => me [objectId] => klMchCkIDi [phoneNumber] => ["xx665542","xxx9446"] [state] => 1 [updatedAt] => 2015-11-22T08:24:46.948Z [userId] => 433011AC-228A-4931-8700-4D050FA18FC1 ) ) )
答案 0 :(得分:2)
有几种方法可以调试评论中提到的这种情况; print_r()
和var_dump()
。
var_dump()
,虽然前几次难以阅读,但我最喜欢它,因为它告诉你数组中每个值的数据类型。这将确认预期的字符串是否确实是一个数组。
<?php
$a = array(1, 2, array("a", "b", "c"));
var_dump($a);
输出是;
array(3) {
[0]=>
int(1)
[1]=>
int(2)
[2]=>
array(3) {
[0]=>
string(1) "a"
[1]=>
string(1) "b"
[2]=>
string(1) "c"
}
}
如您所见,它显示array
,int
和string
作为数据类型。
您可能还希望安装Xdebug extension for PHP转储更多有用的错误消息和回溯。前几次再次难以阅读,但非常值得!
答案 1 :(得分:2)
您可能将json作为json中的字符串。这就是为什么在json_decode()
之后你仍然在phoneNumber
内有json。您有两个选择:
解码phoneNumber
,如
$foundPhoneNum=json_decode($json['results'][0]['phoneNumber']);
构建正确的初始json。而不是
{"phoneNumber": "[\"xx665542\",\"xxx9446\"]"}
应该是
{"phoneNumber": ["xx665542","xxx9446"]}
答案 2 :(得分:1)
foreach ($foundPhoneNum as $value)
{
print_r($value);
}
有一个额外的&amp;在$ value之前。试试这个。