您好我正在尝试从下面的数组示例中获取单个值 -
我想获取 order_id 和名称 -
<?php
$url = 'http://example.com/index.php?route=feed/rest_api/orders&key=test219';
$json = file_get_contents($url);
echo '<pre>'; echo $json; echo '</pre>';
?>
显示
的数组Array
(
[0] => Array
(
[order_id] => 6
[name] => zoraya panansar
[status] => Complete
[date_added] => 2014-01-24 23:06:09
[products] => 4
[total] => 14.8000
[address_1] => 345 goldhawk road
[address_2] => hammersmith
[city] => london
[Postcode] => w6 0wz
[Country] => United Kingdom
[Email] => zpanansar@yahoo.com
[Tele.] => 0786870150
)
我已经尝试了
echo $json->order_id;
和
echo $json[0]['order_id'];
但它不起作用......请帮忙
答案 0 :(得分:1)
index.php正在返回错误的数据,如果你仔细观察,那么你会发现它正在尝试发送success = false结果作为json数据,但可能出于测试目的,它也会在json数据之前直接返回数组内容。 / p>
此外,如果这应该是一个json结果,那么在使用返回的json对象作为类对象(如$ json-&gt; order_id)之前,需要使用json_decode。
这是我在尝试使用您提供的参数时获得的当前URL时得到的结果:查看最后一行:
Array
(
[0] => Array
(
[order_id] => 6
[name] => zoraya panansar
[status] => Complete
[date_added] => 2014-01-24 23:06:09
[products] => 4
[total] => 14.8000
[address_1] => 345 goldhawk road
[address_2] => hammersmith
[city] => london
[Postcode] => w6 0wz
[Country] => United Kingdom
[Email] => zpanansar@yahoo.com
[Tele.] => 0786870150
)
[1] => Array
(
[order_id] => 5
[name] => ciria ann nuqui
[status] => Complete
[date_added] => 2014-01-24 17:58:36
[products] => 7
[total] => 36.4000
[address_1] => 345 goldhawk road
[address_2] => hammersmith
[city] => london
[Postcode] => w6 0wz
[Country] => United Kingdom
[Email] => joycernuqui@yahoo.com
[Tele.] => 07515732291
)
)
{"success":false}
答案 1 :(得分:0)
您无法访问服务器返回的数据。服务器不是返回一个json对象,而是通过数组返回print_r()
输出。
如果是您的服务器,请停止打印,然后在打印前在阵列上使用json_encode()
。
如果它不是您的服务器,那么您必须解析文本中的值。您可以使用preg_match_all()
。
preg_match_all("/\[order_id\] => ([^\n\r]+)/", $json, $m);
print_r($m[1]);
可能有内置的php函数可以获取这样的print_r()
输出并恢复到php数组,但我不知道它!
答案 2 :(得分:0)
将响应从url更改为json(使用json_encode函数)
url脚本中的最后一行应为
echo json_encode($some_array);
而不是你想要的内容:
$array = json_decode(file_get_contents($url),TRUE);
if(!is_array($array)){
echo 'bad response';
exit();
}
var_dump($array);
echo $array[0]['order_id'];