gpt4 book ai didi

php - 对 php 数组对象中的结果进行排序

转载 作者:行者123 更新时间:2023-11-30 00:04:07 25 4
gpt4 key购买 nike

我正在做一个票务预订网站,它通过 PHP 中的 SOAP 请求获取 xml 结果。然后结果以 PHP 对象数组的形式返回。然后我使用 PHP 显示这些结果。一次请求会返回 300 多个结果。因此,我需要按价格构建一个节目:为最终用户提供从低到高或从高到低的选择。我对 PHP 数组对象的经验很少,有人可以建议我可以研究这种排序的选项吗?

我正在考虑将所有结果存储到数据库表中,然后排序,然后使用 SELECT 查询,但由于每天都会有很多搜索,并且每次搜索至少产生 300 个条目,很快就会使数据库变得非常庞大。有没有办法将搜索临时存储在数据库中?

感谢您花时间阅读本文。如果任何人都不清楚上述问题,我很乐意提供任何进一步的解释。

这是我的数据示例:

Array ( 
[0] => stdClass Object (
[Id] => HS
[Code] => CAUMJM
[Status] => InstantConfirmation
[Price] => 87
[Tax] => 0
[SalePrice] => 0
[currency] => USD
[Type] => Guest Only
[guests] => Array (
[0] => stdClass Object (
[Category] => Standard for 1 guest
[number] => Array ( [0] => stdClass Object ( [Type] => A[age] => 30 ) )
[totalRate] => 87
[ratesPerHour] => Array ( [0] => stdClass Object ( [date] => 2014-08-20 [amount] => 87 ) )
)
)
)
)

最佳答案

尝试使用 usort。 PHP Documentation

提供您想要排序的 php 数组和一个匿名函数,该函数将比较任何数组项中的两个并确定哪个项应位于列表中的第一个。

除非我错了,否则您似乎是从第三方服务获取肥皂,在这种情况下您将无法从数据库查询结果。您可以将 usort 函数的结果存储在 apc 或 memcached 等内存存储中,而不是创建自己的本地数据库缓存。那么计算量大的 usort 每个查询只需运行一次。这将显着加快排序结果的请求时间。

我提出的缓存建议有点偏离主题,并且没有必要获得您想要的结果。如果您有兴趣,请研究一下,但我会尽力帮助您到达您需要的位置。

就您的 usort 实现而言,请尝试如下操作:

    $lowToHigh = function($a, $b) {
return $a->SalePrice < $b->SalePrice ? 1 : -1;
};

$highToLow = function($a, $b) {
return $a->SalePrice < $b->SalePrice ? -1 : 1;
};

// Sort results highest to lowest
usort($results, $highToLow);
// Sort results lowest to highest
usort($results, $lowToHigh);

关于php - 对 php 数组对象中的结果进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24746423/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com