Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/270.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 - Fatal编程技术网

如何使用PHP读取数组/JSON中的复杂数据?

如何使用PHP读取数组/JSON中的复杂数据?,php,arrays,json,Php,Arrays,Json,在PHP中使用JSON_decode()函数读取JSON中的大量数据,我一直面临着非常困难的时期。基本上,我需要阅读基本数据来显示航班日期、始发地和目的地 应该是这样的: 20 solutions found. Solution# 1 Sale Price: BRL2919.54 Slice 0 TA 916 GRU 2015-06-16T06:15-03:00 LIM 2015-06-16T09:20-05:00

在PHP中使用JSON_decode()函数读取JSON中的大量数据,我一直面临着非常困难的时期。基本上,我需要阅读基本数据来显示航班日期、始发地和目的地

应该是这样的:

20 solutions found.

Solution#   1   Sale Price: BRL2919.54
         Slice 0
             TA 916 GRU 2015-06-16T06:15-03:00 LIM 2015-06-16T09:20-05:00
             AV 962 LIM 2015-06-16T10:04-05:00 MIA 2015-06-16T16:48-04:00
这是JSON代码:

当我试图转换它并读取它时,会出现空数据

$data = json_decode($results, true); // $results is a variable with
the JSON content from the URL above

echo $data['tripOption']['saleTotal']; // just an example

我可以从您发布的json结构中解码数据。下面是一个简单的示例脚本,它转储了解码的数组结构:

<?php
$json = file_get_contents('./data.json');
$data = json_decode($json, true);
print_r($data);
因为这是一个数组,所以您必须在其中寻址一个特定的条目,才能获得预期的输出:

echo $data['trips']['tripOption'][0]['saleTotal']; // just an example
是的,你应该使用

print_r($a['trips']['tripOption'][0]['saleTotal'])
如果要读取该数组中的数据,可以执行以下操作:

$data = json_decode($s,true);
foreach ($data['trips']['tripOption'] as $item){
    print_r($item['saleTotal'] . "\n");
};

很好,这很有道理。如果我必须读取该数组中的数据,该怎么做?我必须使用foreach阅读所有答案吗?如果我的答案对你有用,请投票支持我的答案,谢谢!是的,谢谢你!如果我需要从更复杂的阵列内部获取数据,比如“载体”,该怎么办?我得走一走才能拿到它?比如:echo$dados['trips']['tripOption']['slice']['segment']['flight']['carrier']?顺便说一句,这不起作用是的。我认为没有其他方法。在你知道数组中有什么之前,你无法获取其中的列。它不起作用。。。我对数组层次结构不太满意。谢谢你。你说得很对,我解决不了这个问题。例如,要获取层次结构第6位的“carrier”,这是不可行的:$data['trips']['trippoption']['slice']['segment']['flight']['carrier'];同样的事情:您在层次结构中查看相同的位置。再次尝试在数组
tripOption
中寻址元素
slice
,它是一个数字数组,因此只提供数字键。通常,它有助于减少表达式并转储数组的一部分以进行调试,这里是打印($data['trips']['tripOption')然后检查并一次添加一个层次结构级别。所以你感觉到了前进的方向。
$data = json_decode($s,true);
foreach ($data['trips']['tripOption'] as $item){
    print_r($item['saleTotal'] . "\n");
};