【发布时间】:2021-05-02 21:15:55
【问题描述】:
在 c#、java 等许多语言中,我们已经对数组进行了排序!这意味着当我们向其中添加一些元素时,它将根据排序方法在正确的索引中添加新元素... 用这个算法插入元素太快了!
但据我所知,在 php 中,我们可以使用 ksort、sort 或类似的方法对数组进行排序,但我没有在 php 中找到类似排序数组的东西,以便更好地管理我们希望始终排序的数组!
如果我弄清楚 ksort 是如何工作的,我很困难,我可以自己编写排序数组,但我没有找到任何解决方案来按索引将项目添加到数组中......
有谁知道如何在 php 中实现排序数组?或者 有谁知道如何在我想要的任何索引中添加元素?
更新 1
我在 php 中需要这样的东西:https://www.tutorialsteacher.com/csharp/csharp-sortedlist
我有一个巨大的数组(大约 2m 行),我应该根据价格对其进行排序!
目前我按ksort 对其进行排序,但我对性能造成了巨大影响
更新 2
我想为我的加密货币交易所创建交易匹配引擎,现在我使用 redis 作为我的数据输入,但是当我使用 php 数组作为我的数据输入时,性能提高了大约 250 倍。
(在 redis 中我可以添加大约 3.5k/s 的订单)
我测试了我的代码,发现ksrot 占用了我代码运行时间的大约 83%。现在我想使用排序列表来提高我的表现。现在我可以使用ksort 处理大约 930k/s 的订单(添加数组、排序数组、迭代数组顶部)。
【问题讨论】:
-
如何在我想要的任何索引中添加元素? ...
$arr[45] = "something"; -
使用SPL extension 的堆怎么样? cmets中有一个example
-
@ADyson
$arr[45] = "something"它会将something添加到键 45 而不是数组 45 的索引...例如,我想向 2 添加一个元素!这意味着当我在数组上使用 foreach 时,我会在第二次迭代中获取该元素 -
@PtrTon 如果我使用堆,我可以在堆的末尾添加元素!我想在任何我想要的地方添加我的元素!
public SplHeap::insert ( mixed $value ) : void
标签: php arrays sorting sortedlist