Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用一个方括号进行PHP JSON解码_Php_Arrays_Json_Function - Fatal编程技术网

用一个方括号进行PHP JSON解码

用一个方括号进行PHP JSON解码,php,arrays,json,function,Php,Arrays,Json,Function,好的,我正在用php获取市场数据,它工作得很好,但我遇到了一个api,它提供了这一点 通常我用这个代码来抓取它 $data = curl_exec($c); curl_close($c); $obj = json_decode($data); $doge = print_r($obj->{'last_price'}."\n", true); 但是它不工作,因为括号中有“[”。没有其他api有这些 如何绕过它们获取信息?当您对对象进行打印时,您可以看到这样的结构 Array (

好的,我正在用php获取市场数据,它工作得很好,但我遇到了一个api,它提供了这一点

通常我用这个代码来抓取它

$data = curl_exec($c);
curl_close($c);
$obj = json_decode($data);
$doge = print_r($obj->{'last_price'}."\n", true);
但是它不工作,因为括号中有
“[”
。没有其他api有这些


如何绕过它们获取信息?

当您对对象进行
打印时,您可以看到这样的结构

Array
(
    [0] => stdClass Object
        (
            [market_id] => 16
            [code] => DOGE
            [last_price] => 0.00000136
            [yesterday_price] => 0.00000140
            [exchange] => BTC
            [change] => -2.86
            [24hhigh] => 0.00000150
            [24hlow] => 0.00000132
            [24hvol] => 6.544
        )

)
因此,要访问它,您可以看到
最后一个\u price
位于数组索引
0
下,因此您需要在对象之前提供
索引

访问方式。。 (或)


您得到的响应实际上是一个
数组
。首先(在您的例子中是唯一一个)元素是
对象
。因此,要访问此
对象
,只需调用:

$array = json_decode($data);
$obj = $array[0];
$doge = print_r($obj->{'last_price'}."\n", true);

所以,
var_在解码之前转储数据,看看它是什么类型的。
obj[0]->{“last_price”}
它只是一个包装数组。仅供参考,“没有其他API有这些括号”是不正确的。并且确实出现在无数的API中。你可能只是第一次看到它们,这很好。你应该使用json_decode($json,true)因此,json中的jsonArray也得到了处理。实际上,您应该解释OP做错了什么,而不仅仅是给出代码解决方案。@MikeBrant,谢谢。
echo $doge =$obj[0]->{'last_price'};
$array = json_decode($data);
$obj = $array[0];
$doge = print_r($obj->{'last_price'}."\n", true);