- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
如果我有一个有符号整数数组,例如:
Array
(
[0] => -3
[1] => 1
[2] => 2
[3] => 3
[4] => 3
)
为了获得唯一值,我会本能地使用 array_unique
但经过考虑我可以执行两次 array_flip
会产生相同的效果,我认为它会更快?
array_unique
O(n log n) 因为它使用的排序操作
array_flip
O(n)
我的假设是否正确?
更新/示例:
$intArray1 = array(-4,1,2,3);
print_r($intArray1);
$intArray1 = array_flip($intArray1);
print_r($intArray1);
$intArray1 = array_flip($intArray1);
print_r($intArray1);
Array
(
[0] => -3
[1] => 1
[2] => 2
[3] => 3
[4] => 3
)
Array
(
[-3] => 0
[1] => 1
[2] => 2
[3] => 4
)
Array
(
[0] => -3
[1] => 1
[2] => 2
[4] => 3
)
最佳答案
我为你做了基准测试:CodePad
您对此的直觉是正确的!
$test=array();
for($run=0; $run<1000; $run++)
$test[]=rand(0,100);
$time=microtime(true);
for($run=0; $run<100; $run++)
$out=array_unique($test);
$time=microtime(true)-$time;
echo 'Array Unique: '.$time."\n";
$time=microtime(true);
for($run=0; $run<100; $run++)
$out=array_keys(array_flip($test));
$time=microtime(true)-$time;
echo 'Keys Flip: '.$time."\n";
$time=microtime(true);
for($run=0; $run<100; $run++)
$out=array_flip(array_flip($test));
$time=microtime(true)-$time;
echo 'Flip Flip: '.$time."\n";
输出:
Array Unique: 1.1829199790955
Keys Flip: 0.0084578990936279
Flip Flip: 0.0083951950073242
请注意 array_keys(array_flip($array))
将按顺序给出新的键值,在许多情况下这可能是您想要的(除了比 array_values(array_unique ($array))
),而 array_flip(array_flip($array))
与 array_unique($array)
相同(除了快得多),其中键保持不变。
关于php - array_unique 与 array_flip,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8321620/
我有一些代码正在运行,并且运行良好,但是当数组中的值为“morphsuite”时,相关站点已开始生成重复项 代码: if(isset($sort2)) { $sort2 = array_un
在下面的代码中: $sth = $dbh->query('SELECT DISTINCT title,courseId,location from training'); $sth->setFetc
所以我得到了这个数组: Array( [0] => Array( [date_add] => 2016 - 12 - 01[0] => 2016 - 12 - 01 )
我有以下自动完成框的代码,我添加了一个图像以澄清选择,但想确保返回的 title 是唯一的,但是,当我到达使数组唯一,我添加了其他代码,使其在其他区域不唯一。有办法解决这个问题吗? $query =
我这里有这段代码: $bestffffs = $db->query("SELECT * FROM chapter WHERE ch_trans = '".$wordss."' ORDER BY ch_
我有以下代码,但是,array unique 根本不起作用,我不知道为什么? 查询中的 group by 或 distinct 已被使用,但是,数据为每个主题提取了多个记录,然后我将其删除并实际上使它
这个问题在这里已经有了答案: how to select unique keywords from a comma separated tags (3 个答案) 关闭 6 个月前。 这是我的表tra
对象有没有类似array_unique的方法?我有一堆数组,其中包含我合并的“角色”对象,然后我想取出重复项:) 最佳答案 array_unique使用 SORT_REGULAR 处理一组对象: cl
我正在尝试学习如何使用 array_unique,所以我制作了一些示例代码,但没有得到我预期的结果。 $array[0] = 1; $array[1] = 5; $array[2] = 2; $arr
对象有没有类似array_unique的方法?我有一堆数组,其中包含我合并的“角色”对象,然后我想取出重复项:) 最佳答案 array_unique使用 SORT_REGULAR 处理一组对象: cl
我正在检查 array_unique 函数。手册说它也会对值进行排序。但我看不到它正在对值进行排序。请查看我的示例代码。 $input = array("a" => "green", 3=>"red"
PHP 中是否有一个数组函数以某种方式执行 array_merge,比较值,忽略键?我认为 array_unique(array_merge($a, $b)) 有效,但我相信一定有更好的方法来做到这一
我正在构建一个扩展 include_path 的自动加载器。它需要一个数组,追加 explode() 包含路径,删除所有对当前目录的引用,在数组的开头添加一个当前目录,最后 join() 将整个内容组
如果我有一个使用整数作为索引的数组。 (1、2、3 等)。当我在其上使用 array_unique 函数时,新数组值是否会使用从 1 开始的新索引存储?或者这个新数组是否使用与前一个数组相同的索引?
如果将 array_unique 用于具有对象元素的数组,在项目中使用 DateTime 再次遇到复制问题,(但仅 DateTime 有问题),请参见代码: class simpleClass {
为了获得唯一值,我使用了唯一值。下面是我正在使用的代码 array_unique($results_external); aasort($results_external,"created_on");
这个问题在这里已经有了答案: 关闭9年前。 Possible Duplicate: Re-index numeric array keys 我有一个数组如下 Array ( [0] => 15
对于数组中的数组,我需要一个像 array_unique 这样的函数。 案例 - 应该相等,但输出“不相等”: 应该如何更改代码以使输出“相等”? 最佳答案 您应该修改对 array_unique
我有一个数组 Array( [0] => Array ( [0] => 33 [user_id] => 33 [1] => 3
这个问题在这里已经有了答案: 关闭9年前。 Possible Duplicate: Re-index numeric array keys 我有一个数组如下 Array ( [0] => 15
我是一名优秀的程序员,十分优秀!