如何在foreach循环PHP中回显Json数据
大家好,在发送post请求后,我正在处理wego flight api,我有一个json数据数组,格式如下如何在foreach循环PHP中回显Json数据,php,json,Php,Json,大家好,在发送post请求后,我正在处理wego flight api,我有一个json数据数组,格式如下 {"response":{ "pendingResults":"true", "itineraries":[ {"ecpcRank":0,"inboundInfo":{"aircraftTypes":[],"departureTime":1401116400000,"layoverInMin":0,"flightNumbers":["SQ981"],"durationInMin":85,"
{"response":{
"pendingResults":"true",
"itineraries":[
{"ecpcRank":0,"inboundInfo":{"aircraftTypes":[],"departureTime":1401116400000,"layoverInMin":0,"flightNumbers":["SQ981"],"durationInMin":85,"airportsExpanded":["BKK","SIN"],"localDepartureTimeStr":"2014/05/26 22:00 +0700","airports":["BKK","SIN"],"arrivalTime":1401121500000,"numStops":0,"flightClasses":[{"name":"Economy","fareClass":1}],"localArrivalTimeStr":"2014/05/27 00:25 +0800"},"location":[{"code":"BKK","name":"Bangkok"},{"code":"SIN","name":"Singapore Changi"}],"carrier":[{"name":"Singapore Airlines","code":"SQ"}],"bookingType":"WEBSITE","price":{"name":"","nameOTA":"","description":"","amount":"406","totalAmount":"406","pricePerPassenger":"406","currencyCode":"USD","totalPricePerPassenger":"406","includesTax":true},"generatedDate":1399013553817,"providerId":"singaporeair.com","id":"SQ974[SIN-BKK]|SQ981[BKK-SIN]","originCountryCode":"SG","bookingCode":"14859286949361958","destinationCountryCode":"TH","outboundInfo":{"aircraftTypes":[],"departureTime":1399956900000,"layoverInMin":0,"flightNumbers":["SQ974"],"durationInMin":205,"airportsExpanded":["SIN","BKK"],"localDepartureTimeStr":"2014/05/13 12:55 +0800","airports":["SIN","BKK"],"arrivalTime":1399969200000,"numStops":0,"flightClasses":[{"name":"Economy","fareClass":1}],"localArrivalTimeStr":"2014/05/13 15:20 +0700"}},
{"ecpcRank":0,"inboundInfo":{"aircraftTypes":[],"departureTime":1401096600000,"layoverInMin":0,"flightNumbers":["SQ977"],"durationInMin":85,"airportsExpanded":["BKK","SIN"],"localDepartureTimeStr":"2014/05/26 16:30 +0700","airports":["BKK","SIN"],"arrivalTime":1401101700000,"numStops":0,"flightClasses":[{"name":"Economy","fareClass":1}],"localArrivalTimeStr":"2014/05/26 18:55 +0800"},"location":[{"code":"BKK","name":"Bangkok"},{"code":"SIN","name":"Singapore Changi"}],"carrier":[{"name":"Singapore Airlines","code":"SQ"}],"bookingType":"WEBSITE","price":{"name":"","nameOTA":"","description":"","amount":"406","totalAmount":"406","pricePerPassenger":"406","currencyCode":"USD","totalPricePerPassenger":"406","includesTax":true},"generatedDate":1399013553833,"providerId":"singaporeair.com","id":"SQ976[SIN-BKK]|SQ977[BKK-SIN]","originCountryCode":"SG","bookingCode":"14859286965418532","destinationCountryCode":"TH","outboundInfo":{"aircraftTypes":[],"departureTime":1399968000000,"layoverInMin":0,"flightNumbers":["SQ976"],"durationInMin":205,"airportsExpanded":["SIN","BKK"],"localDepartureTimeStr":"2014/05/13 16:00 +0800","airports":["SIN","BKK"],"arrivalTime":1399980300000,"numStops":0,"flightClasses":[{"name":"Economy","fareClass":1}],"localArrivalTimeStr":"2014/05/13 18:25 +0700"}},
{"ecpcRank":0,"inboundInfo":{"aircraftTypes":[],"departureTime":1401107400000,"layoverInMin":0,"flightNumbers":["SQ979"],"durationInMin":85,"airportsExpanded":["BKK","SIN"],"localDepartureTimeStr":"2014/05/26 19:30 +0700","airports":["BKK","SIN"],"arrivalTime":1401112500000,"numStops":0,"flightClasses":[{"name":"Economy","fareClass":1}],"localArrivalTimeStr":"2014/05/26 21:55 +0800"},"location":[{"code":"BKK","name":"Bangkok"},{"code":"SIN","name":"Singapore Changi"}],"carrier":[{"name":"Singapore Airlines","code":"SQ"}],"bookingType":"WEBSITE","price":{"name":"","nameOTA":"","description":"","amount":"406","totalAmount":"406","pricePerPassenger":"406","currencyCode":"USD","totalPricePerPassenger":"406","includesTax":true},"generatedDate":1399013553835,"providerId":"singaporeair.com","id":"SQ976[SIN-BKK]|SQ979[BKK-SIN]","originCountryCode":"SG","bookingCode":"14859286967291059","destinationCountryCode":"TH","outboundInfo":{"aircraftTypes":[],"departureTime":1399968000000,"layoverInMin":0,"flightNumbers":["SQ976"],"durationInMin":205,"airportsExpanded":["SIN","BKK"],"localDepartureTimeStr":"2014/05/13 16:00 +0800","airports":["SIN","BKK"],"arrivalTime":1399980300000,"numStops":0,"flightClasses":[{"name":"Economy","fareClass":1}],"localArrivalTimeStr":"2014/05/13 18:25 +0700"}},
{"ecpcRank":0,"inboundInfo":{"aircraftTypes":[],"departureTime":1401116400000,"layoverInMin":0,"flightNumbers":["SQ981"],"durationInMin":85,"airportsExpanded":["BKK","SIN"],"localDepartureTimeStr":"2014/05/26 22:00 +0700","airports":["BKK","SIN"],"arrivalTime":1401121500000,"numStops":0,"flightClasses":[{"name":"Economy","fareClass":1}],"localArrivalTimeStr":"2014/05/27 00:25 +0800"},"location":[{"code":"BKK","name":"Bangkok"},{"code":"SIN","name":"Singapore Changi"}],"carrier":[{"name":"Singapore Airlines","code":"SQ"}],"bookingType":"WEBSITE","price":{"name":"","nameOTA":"","description":"","amount":"406","totalAmount":"406","pricePerPassenger":"406","currencyCode":"USD","totalPricePerPassenger":"406","includesTax":true},"generatedDate":1399013553839,"providerId":"singaporeair.com","id":"SQ976[SIN-BKK]|SQ981[BKK-SIN]","originCountryCode":"SG","bookingCode":"14859286971168219","destinationCountryCode":"TH","outboundInfo":{"aircraftTypes":[],"departureTime":1399968000000,"layoverInMin":0,"flightNumbers":["SQ976"],"durationInMin":205,"airportsExpanded":["SIN","BKK"],"localDepartureTimeStr":"2014/05/13 16:00 +0800","airports":["SIN","BKK"],"arrivalTime":1399980300000,"numStops":0,"flightClasses":[{"name":"Economy","fareClass":1}],"localArrivalTimeStr":"2014/05/13 18:25 +0700"}},
{"ecpcRank":0,"inboundInfo":{"aircraftTypes":[],"departureTime":1401075600000,"layoverInMin":0,"flightNumbers":["SQ973"],"durationInMin":85,"airportsExpanded":["BKK","SIN"],"localDepartureTimeStr":"2014/05/26 10:40 +0700","airports":["BKK","SIN"],"arrivalTime":1401080700000,"numStops":0,"flightClasses":[{"name":"Economy","fareClass":1}],"localArrivalTimeStr":"2014/05/26 13:05 +0800"},"location":[{"code":"BKK","name":"Bangkok"},{"code":"SIN","name":"Singapore Changi"}],"carrier":[{"name":"Singapore Airlines","code":"SQ"}],"bookingType":"WEBSITE","price":{"name":"","nameOTA":"","description":"","amount":"437","totalAmount":"437","pricePerPassenger":"437","currencyCode":"USD","totalPricePerPassenger":"437","includesTax":true},"generatedDate":1399013553842,"providerId":"singaporeair.com","id":"SQ978[SIN-BKK]|SQ973[BKK-SIN]","originCountryCode":"SG","bookingCode":"14859286974435322","destinationCountryCode":"TH","outboundInfo":{"aircraftTypes":[],"departureTime":1399977300000,"layoverInMin":0,"flightNumbers":["SQ978"],"durationInMin":205,"airportsExpanded":["SIN","BKK"],"localDepartureTimeStr":"2014/05/13 18:35 +0800","airports":["SIN","BKK"],"arrivalTime":1399989600000,"numStops":0,"flightClasses":[{"name":"Economy","fareClass":1}],"localArrivalTimeStr":"2014/05/13 21:00 +0700"}},
{"ecpcRank":0,"inboundInfo":{"aircraftTypes":[],"departureTime":1401084900000,"layoverInMin":0,"flightNumbers":["SQ975"],"durationInMin":85,"airportsExpanded":["BKK","SIN"],"localDepartureTimeStr":"2014/05/26 13:15 +0700","airports":["BKK","SIN"],"arrivalTime":1401090000000,"numStops":0,"flightClasses":[{"name":"Economy","fareClass":1}],"localArrivalTimeStr":"2014/05/26 15:40 +0800"},"location":[{"code":"BKK","name":"Bangkok"},{"code":"SIN","name":"Singapore Changi"}],"carrier":[{"name":"Singapore Airlines","code":"SQ"}],"bookingType":"WEBSITE","price":{"name":"","nameOTA":"","description":"","amount":"437","totalAmount":"437","pricePerPassenger":"437","currencyCode":"USD","totalPricePerPassenger":"437","includesTax":true},"generatedDate":1399013553848,"providerId":"singaporeair.com","id":"SQ978[SIN-BKK]|SQ975[BKK-SIN]","originCountryCode":"SG","bookingCode":"14859286980412767","destinationCountryCode":"TH","outboundInfo":{"aircraftTypes":[],"departureTime":1399977300000,"layoverInMin":0,"flightNumbers":["SQ978"],"durationInMin":205,"airportsExpanded":["SIN","BKK"],"localDepartureTimeStr":"2014/05/13 18:35 +0800","airports":["SIN","BKK"],"arrivalTime":1399989600000,"numStops":0,"flightClasses":[{"name":"Economy","fareClass":1}],"localArrivalTimeStr":"2014/05/13 21:00 +0700"}},
{"ecpcRank":0,"inboundInfo":{"aircraftTypes":[],"departureTime":1401096600000,"layoverInMin":0,"flightNumbers":["SQ977"],"durationInMin":85,"airportsExpanded":["BKK","SIN"],"localDepartureTimeStr":"2014/05/26 16:30 +0700","airports":["BKK","SIN"],"arrivalTime":1401101700000,"numStops":0,"flightClasses":[{"name":"Economy","fareClass":1}],"localArrivalTimeStr":"2014/05/26 18:55 +0800"},"location":[{"code":"BKK","name":"Bangkok"},{"code":"SIN","name":"Singapore Changi"}],"carrier":[{"name":"Singapore Airlines","code":"SQ"}],"bookingType":"WEBSITE","price":{"name":"","nameOTA":"","description":"","amount":"437","totalAmount":"437","pricePerPassenger":"437","currencyCode":"USD","totalPricePerPassenger":"437","includesTax":true},"generatedDate":1399013553854,"providerId":"singaporeair.com","id":"SQ978[SIN-BKK]|SQ977[BKK-SIN]","originCountryCode":"SG","bookingCode":"14859286986666243","destinationCountryCode":"TH","outboundInfo":{"aircraftTypes":[],"departureTime":1399977300000,"layoverInMin":0,"flightNumbers":["SQ978"],"durationInMin":205,"airportsExpanded":["SIN","BKK"],"localDepartureTimeStr":"2014/05/13 18:35 +0800","airports":["SIN","BKK"],"arrivalTime":1399989600000,"numStops":0,"flightClasses":[{"name":"Economy","fareClass":1}],"localArrivalTimeStr":"2014/05/13 21:00 +0700"}},
我想打印全票
下面是我的php代码
$result2=curl_exec($ch);
$data = json_decode($result2);
$data = objectToArray($data);
function objectToArray($object)
{
if (!is_object($object) && !is_array($object)) {
return $object;
}
if (is_object($object)) {
$object = (array )$object;
}
return array_map('objectToArray', $object);
}
foreach($data as $root){
foreach($root as $rootOne){
if(is_array($rootOne)){
foreach($rootOne as $rootArrays){
if(!empty($rootArrays["price"])){
$priceArray = $rootArrays["price"];
echo $priceArray["totalPricePerPassenger"];
echo"<hr>";
}
}
}
}
}
$result2=curl\u exec($ch);
$data=json_解码($result2);
$data=objectToArray($data);
函数objectToArray($object)
{
如果(!is_对象($object)&&!is_数组($object)){
返回$object;
}
if(is_object($object)){
$object=(数组)$object;
}
返回数组映射('objectToArray',$object);
}
foreach($root形式的数据){
foreach($root作为$rootOne){
if(is_数组($rootOne)){
foreach($rootOne作为$rootarray){
如果(!empty($rootArrays[“price”])){
$priceArray=$rootArrays[“price”];
echo$priceArray[“totalPricePerPassenger”];
回声“
”;
}
}
}
}
}
只需使用
将返回一个数组,您可以更灵活地回显该数组。首先,您需要确保JSON字符串有效。为此,请使用类似的在线过梁 请注意,这里不需要任何奇特的函数,如
objectToArray()
,因为默认情况下允许将字符串解码为数组(与对象相反)。只需将第二个参数设置为TRUE
:
$data = json_decode($json, TRUE); // no need to use objectToArray()
然后使用以下方法检查阵列的结构:
错误,它重新运行object@EaterOfCode如果您提供true作为次要参数,则不会这样做。@据我所知,我建议他只使用它,而不是使用其他函数不必要的复杂程度。@TerryHiggins:第一步:通过添加到脚本顶部来启用错误报告。刷新页面。你得到了什么错误?@TerryHiggins:这意味着你没有得到数组。您的JSON字符串是什么样子的?你从哪里得到的?@TerryHiggins:注意,我只能在那个页面上看到一个错误,而不能看到实际的代码。如果你把准确的代码贴在某个地方,这样我就可以看到它,这将是非常有帮助的。现在请检查URL,我已经添加了代码too@TerryHiggins:URL中缺少API键。当您尝试在浏览器中手动加载URL时会发生什么情况?而且,你似乎没有读到答案。再读一遍。
echo '<pre>' . print_r($data, TRUE) . '</pre>;
foreach ($data['response']['itineraries'] as $itinerary) {
echo $itinerary['price']['pricePerPassenger'] . "\n";
}