2012-02-05 27 views
-1

我有一个数组,其中插入了与数字键相关的值。我的问题是,当我插入一个小于数字中较大的键之前插入的键的键值时,它是下一个不是前一个键的键(但键较小)。我不想应用排序,因为我没有太多时间限制,数据也很大。后来我需要在数组中搜索特定的键和值对。因此我不能使用阵列板来初始化阵列(阵列的长度是100000)。因为如果我这样做,搜索会很慢。我只是想要键值对(我插入)在数组中,但我希望具有较小数值的键应该自动成为具有较大数值的键的前一元素。 例如:自动排序数组中的数字键php

$a[0]=1; 
$a[25]=2; 
$a[12]=3; 

$a[12]这里应该是该阵列的第二元件,而且,因为我用的foreach过量每个元素,它出来成为第三元件。

+2

所以你想排序的数组,没有排序?祝你好运。 – vascowhite 2012-02-05 08:06:31

+1

我只是想说,如果关键'12'小于'25',那么它必须在它之前(因为两者都是数字) – 2012-02-05 10:11:56

回答

3

你不能免费排序。用一个简单的foreach循环初始化该数组。要么是咬住子弹,要么a)在最后排序或b)在每个元素插入后进行排序。

+0

更好的解决方案是将元素与array_slice插入到小于那..但我认为你们有比这更好的解决方案..但是我认为我比你的更好 – 2012-02-05 10:15:11

+0

并且为了找到数组中最大的键小于你即将插入的键,你需要....排序! (至少在幕后发生了什么......) – 2012-02-05 22:36:04

+1

我认为OP正在寻找的是PHP中的一种数据结构,它在插入项目时对数组进行排序(以类似于二叉树的方式std :: map在C++中)。据我所知,PHP数组没有这样的数据结构,但是你可以创建它......是否比填充数组然后排序它快,我不知道。 – jdavidbakr 2015-04-13 15:15:48