首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果数组在array_unique之前被分开,那么我是否应该在该数组之后使用asort?

如果数组在array_unique之前被分开,那么我是否应该在该数组之后使用asort?
EN

Stack Overflow用户
提问于 2013-09-10 12:50:30
回答 4查看 225关注 0票数 0
代码语言:javascript
复制
$arr = asort($arr);

//some magic code goes here, $arr is not changed

$arr = array_unique($arr);

我是否应该再次使用asort来确保$arr被取消了?我的测试表明,不,我不知道。但是我不确定array_unique是否真的删除了2nd+重复的元素。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-09-10 13:09:33

您只想确保asortarray_unique使用相同的sort_flags。

默认情况下:

  • 数组array_unique (数组$array,int $sort_flags = SORT_STRING )
  • bool asort ( array &$array,int $sort_flags = SORT_REGULAR )

因此,您可以看到,每个排序将基于不同的算法,这可能主要是匹配,但您希望它显式匹配。因此,明智的做法是作出如下决定:

代码语言:javascript
复制
<?php
$input = array("a" => "green", "red", "b" => "green", "blue", "red");
asort($input,SORT_REGULAR);
print_r($input);
print "\n";
$result = array_unique($input,SORT_REGULAR);
print_r($result);

其结果是:

代码语言:javascript
复制
 Array
(
    [1] => blue
    [a] => green
    [b] => green
    [2] => red
    [0] => red
)

Array
(
    [1] => blue
    [a] => green
    [2] => red
)

还请注意,如果只运行array_unique而不使用初始asort,则会得到不同的结果。

最后,请注意,asort支持两个array_unique不支持的标志:

  1. SORT_NATURAL --使用像natsort()这样的“自然排序”将项作为字符串进行比较
  2. SORT_FLAG_CASE -可以(按位或)与SORT_STRINGSORT_NATURAL组合,以不敏感地对字符串进行排序。

如果您在asort中使用这两种方法中的任何一种,那么您必然需要在array_unique之后再次使用asort

票数 2
EN

Stack Overflow用户

发布于 2013-09-10 13:07:33

不不需要。array_unique将只删除元素,因此顺序将始终保持不变。

票数 2
EN

Stack Overflow用户

发布于 2013-09-10 12:54:46

如果在“asort()”之后不修改数组,则将对数组进行排序。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18719426

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档