PHP循环并获得最低价格
我需要一些帮助,通过一组表示从国家PHP循环并获得最低价格,php,arrays,loops,foreach,Php,Arrays,Loops,Foreach,我需要一些帮助,通过一组表示从国家a到b航班优惠的对象进行循环,每条航线可能包含多个优惠。我想获得每条航线的最低航班报价。。。我只是不知道如何在循环中完成它。这个我试过的作品将给我最低的价格,但我如何才能得到这个价格的整个数组?我知道这听起来很愚蠢,但我被卡住了 $results = array(); $offers = R::getAll( "SELECT * FROM fares WHERE available = 1 LIMIT 4"); $offers返回的数据集示例发布在 然后我
a
到b
航班优惠的对象进行循环,每条航线可能包含多个优惠。我想获得每条航线的最低航班报价。。。我只是不知道如何在循环中完成它。这个我试过的作品将给我最低的价格,但我如何才能得到这个价格的整个数组?我知道这听起来很愚蠢,但我被卡住了
$results = array();
$offers = R::getAll( "SELECT * FROM fares WHERE available = 1 LIMIT 4");
$offers
返回的数据集示例发布在
然后我做了以下工作:
foreach($offers as $key=>$val){
$results ['city'] = $val["name"];
$results ['country'] = $val["parent_name"];
$off = json_decode($val["Flights"]);
var_dump($off);
// here I need to loop through $off & grab the lowest
}
return $results;
$off
dump返回以下内容
object(stdClass)#60 (1) {
["BEY"]=>
array(4) {
[0]=>
object(stdClass)#61 (6) {
["price"]=>
int(490)
["airline"]=>
string(2) "ME"
["flight_number"]=>
int(276)
["departure_at"]=>
string(20) "2015-07-11T12:20:00Z"
["return_at"]=>
string(20) "2015-07-18T08:20:00Z"
["expires_at"]=>
string(20) "2015-06-30T14:31:43Z"
}
[1]=>
object(stdClass)#62 (6) {
["price"]=>
int(639)
["airline"]=>
string(2) "FZ"
["flight_number"]=>
int(716)
["departure_at"]=>
string(20) "2015-07-05T15:50:00Z"
["return_at"]=>
string(20) "2015-07-12T04:30:00Z"
["expires_at"]=>
string(20) "2015-07-01T08:11:49Z"
}
[2]=>
object(stdClass)#63 (6) {
["price"]=>
int(472)
["airline"]=>
string(2) "EY"
["flight_number"]=>
int(299)
["departure_at"]=>
string(20) "2015-07-18T03:10:00Z"
["return_at"]=>
string(20) "2015-07-28T04:30:00Z"
["expires_at"]=>
string(20) "2015-06-30T12:20:30Z"
}
[3]=>
object(stdClass)#64 (6) {
["price"]=>
int(2045)
["airline"]=>
string(2) "SU"
["flight_number"]=>
int(1861)
["departure_at"]=>
string(20) "2015-07-11T14:50:00Z"
["return_at"]=>
string(20) "2015-07-18T05:05:00Z"
["expires_at"]=>
string(20) "2015-06-30T14:31:43Z"
}
}
}
object(stdClass)#65 (1) {
["BEY"]=>
object(stdClass)#66 (3) {
["1"]=>
object(stdClass)#67 (6) {
["price"]=>
int(1903)
["airline"]=>
string(2) "EY"
["flight_number"]=>
int(461)
["departure_at"]=>
string(20) "2015-07-17T22:40:00Z"
["return_at"]=>
string(20) "2015-07-31T04:30:00Z"
["expires_at"]=>
string(20) "2015-07-01T10:46:41Z"
}
["2"]=>
object(stdClass)#68 (6) {
["price"]=>
int(1535)
["airline"]=>
string(2) "QF"
["flight_number"]=>
int(341)
["departure_at"]=>
string(20) "2015-07-17T11:00:00Z"
["return_at"]=>
string(20) "2015-07-31T22:55:00Z"
["expires_at"]=>
string(20) "2015-07-01T10:46:41Z"
}
["3"]=>
object(stdClass)#69 (6) {
["price"]=>
int(2321)
["airline"]=>
string(2) "AY"
["flight_number"]=>
int(5014)
["departure_at"]=>
string(20) "2015-07-17T11:45:00Z"
["return_at"]=>
string(20) "2015-07-31T22:55:00Z"
["expires_at"]=>
string(20) "2015-07-01T10:46:41Z"
}
}
}
ect .....
有什么想法吗
非常感谢 试试这个:
foreach($offers as $key=>$val){
$results ['city'] = $val["name"];
$results ['country'] = $val["parent_name"];
$off = json_decode($val["Flights"], true); //note the true
$lowest = PHP_INT_MAX;
foreach ($off['BEY'] as $item)
$lowest = min($item['price'], $lowest);
//now $lowest is the lowest price
$lowest_item = null;
foreach ($off['BEY'] as $item)
if ($item['price'] == $lowest) {
$lowest_item = $item;
break;
}
//now you can do something with $lowest_item, like $lowest_item['flight_number']
}
我想你可以跳过最后一个循环
<?php
foreach ($offers as $key => $val) {
$results['city'] = $val["name"];
$results['country'] = $val["parent_name"];
$off = json_decode($val["Flights"], true);
$lowest = PHP_INT_MAX;
$lowest_item = null;
foreach ($off['BEY'] as $item) {
$lowest = min($item['price'], $lowest);
if ($item['price'] == $lowest) {
$lowest_item = $item;
}
}
// Now $lowest is the lowest price and
// you can do something with $lowest_item,
// like $lowest_item['flight_number'].
}
根据$off
的结果,它不是单个对象。它包含多个对象。。那么您想要的确切响应是什么?@Awena,您能分享您正在使用的表结构吗?请以纯数组而不是对象的形式显示数据。对于SQL来说,获取每条航线的最低航班报价似乎是一项完美的工作。@Purushottamzende等一下。我认为SQL不能查询JSON数据,是吗?你看小提琴了吗?谢谢你,先生!最后有人在发帖前读了一个问题!我很感激,戴夫。干杯