我一直在尝试使用以下格式从json中提取数据:
[{"_type":"pipe","time":"2013-10-25 02:42:51","1_price":["00.00"],"1_name":["name"],"_template":"675fgy","1_purl":["http://"],"_cached_page_id":"te487","1_image":["image.jpeg"],"url":"http://"},
[{"_type":"pipe","time":"2013-10-25 02:42:55","1_price":["00.00"],"1_name":["name"],"_template":"16778f","1_purl":["http://"],"_cached_page_id":"456gt","1_image":["image.jpeg"],"url":"http://"},
我的以下代码返回“Array2013-10-25 02:42:51”即。它只返回“时间”的值,似乎无法获得值“1_name”
请告诉我我做错了什么
$url = "http://.../api.output";
$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL,$url);
$result=curl_exec($ch);
$arr = json_decode($result, true);
foreach($arr as $val)
{
echo $val['1_name'];
echo $val['time'];
}
答案 0 :(得分:0)
像这样修改 for
循环
$i=0;
foreach($arr as $k=>$v)
{
echo $arr['1_name'][$i];
echo $arr['time'];
$i++;
}
答案 1 :(得分:0)
如果您print_r
json_decode
的结果,您会看到以下内容:
Array
(
[0] => Array
(
[_type] => pipe
[time] => 2013-10-25 02:42:51
[1_price] => Array
(
[0] => 00.00
)
[1_name] => Array
(
[0] => name
)
[_template] => 675fgy
[1_purl] => Array
(
[0] => http://
)
[_cached_page_id] => te487
[1_image] => Array
(
[0] => image.jpeg
)
[url] => http://
)
[1] => Array
(
[_type] => pipe
[time] => 2013-10-25 02:42:55
[1_price] => Array
(
[0] => 00.00
)
[1_name] => Array
(
[0] => name
)
[_template] => 16778f
[1_purl] => Array
(
[0] => http://
)
[_cached_page_id] => 456gt
[1_image] => Array
(
[0] => image.jpeg
)
[url] => http://
)
)
所以,你在$arr
中有一个数组,这使得它成为一个好的变量名。
$arr
的第一个元素具有键0
(这是[0] =>
的意思)并且也是一个数组,但是一个关联的元素(它有字符串作为键而不是数字) 。第一个键是_type
,第二个键是time
,依此类推。
如果查看1_name
键的值,您会发现它是另一个Array级别。它有一个带数字键的条目。如果你想要那个值,那么你必须索引才能达到它。完整路径为$arr[0]['1_name'][0]
。
但是你不想只是$arr[0]
,你想要$arr
的所有元素,所以你要循环它们。这没关系,这意味着$val
代替$arr[whatever]
,所以你有$val['1_name'][0]
。 1_price
,1_purl
等也是如此。但不适用于_type
或time
或其他不显示数组的键。