【问题标题】:php array_unique sorting behaviorphp array_unique 排序行为
【发布时间】:2014-08-16 07:21:33
【问题描述】:

我正在检查 array_unique 函数。手册说它也会对值进行排序。但我看不到它正在对值进行排序。请看我的示例代码。

$input = array("a" => "green", 3=>"red", "b" => "green", 1=>"blue", "red");
print_r($input);
$result = array_unique($input,SORT_STRING);
print_r($result);

The output is

Array
(
    [a] => green
    [3] => red
    [b] => green
    [1] => blue
    [4] => red
)
Array
(
    [a] => green
    [3] => red
    [1] => blue
)

这里的数组 $result 没有排序。任何帮助表示赞赏。

谢谢 普拉莫德

【问题讨论】:

  • 手册并没有说,它是排序值,第二个参数用于比较项目。

标签: php array-unique


【解决方案1】:

array_unique:

接受一个输入数组并返回一个没有重复值的新数组。

请注意,密钥是保留的。 array_unique() 保留每个值遇到的第一个键,并忽略所有后续键。

你可以试试这个来得到结果:

<?php 
$input = array("a" => "green", 3=>"red", "b" => "green", 1=>"blue", "red");
print_r($input);
$result = array_unique($input);
print_r($result);
asort($result);
print_r($result);

【讨论】:

  • 感谢Suchit 的澄清。我有点困惑。
  • 我不知道你的母语是不是英语 Pramod。我的是,我觉得描述很混乱。上面显示的示例非常好。
【解决方案2】:

manual 并不是说​​它会对数组元素进行排序,而是说sort_flags 参数会修改排序行为。

可选的第二个参数 sort_flags 可用于修改 使用这些值的排序行为:[...]

排序行为用于对数组值进行排序,以便执行比较并确定一个元素是否被认为与另一个元素相等。它不会修改底层数组的顺序。

如果要对数组进行排序,则必须将其作为单独的操作进行。数组排序的文档可以在here找到。

对于基于数组值的默认升序排序,您可以使用asort

【讨论】:

    【解决方案3】:

    array_unique 接受一个输入数组并返回一个没有重复值的新数组。它实际上并没有排序。阅读更多http://php.net/manual/en/function.array-unique.php

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-11
      • 1970-01-01
      相关资源
      最近更新 更多