从数组中获取单个值 - 从URL获取数组

时间:2014-03-15 21:01:35

标签: php arrays json curl multidimensional-array

您好我正在尝试从下面的数组示例中获取单个值 -

我想获取 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'];

但它不起作用......请帮忙

3 个答案:

答案 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'];