php数组(十六) array_unique

array_unique — 移除数组中重复的值

 

array_unique(array $arrayint $sort_flags = SORT_STRING): array

array_unique() 接受 array 作为输入并返回没有重复值的新数组。

注意键名保留不变。array_unique() 先将值作为字符串排序,然后对每个值只保留第一个遇到的键名,接着忽略所有后面的键名。这并不意味着在未排序的 array 中同一个值的第一个出现的键名会被保留。

 

参数:

array

  • 输入的数组。

sort_flags

  • 第二个可选参数sort_flags 可用于修改排序行为:

排序类型标记:

  • SORT_REGULAR - 按照通常方法比较(不修改类型)
  • SORT_NUMERIC - 按照数字形式比较
  • SORT_STRING - 按照字符串形式比较
  • SORT_LOCALE_STRING - 根据当前的本地化设置,按照字符串比较。

 

1、首先对值进行排序,保留值出现的对应的第一个key

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

 输出:blue出现在了red之后

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

 

2、值包括字符串”4“和数值4,去重时,哪个在前保留哪个

<?php
$input = array("4", 4,   4, 3, "3", "3", 0, "");
$result = array_unique($input);
var_dump($result);
?>

 输出:

array(4) {
  [0]=>
  string(1) "4"
  [3]=>
  int(3)
  [6]=>
  int(0)
  [7]=>
  string(0) ""
}

 

3、按照不同的形式比较

<?php
$input = array("b", 0, "");
echo "normal";
$result = array_unique($input, SORT_REGULAR); // 0 == “”
var_dump($result);

echo "numeric";
var_dump(intval("b"));
$result = array_unique($input, SORT_NUMERIC); // b == 0
var_dump($result);


echo "string";
$result = array_unique($input, SORT_STRING); //保留所有
var_dump($result);

?>

 输出:

normal
array(2) {
  [0]=>
  string(1) "b"
  [2]=>
  string(0) ""
}
numeric
 int(0)
array(1) {
  [0]=>
  string(1) "b"
}
string
array(3) {
  [0]=>
  string(1) "b"
  [1]=>
  int(0)
  [2]=>
  string(0) ""
}

 

posted on 2021-08-09 20:18  1450811640  阅读(48)  评论(0编辑  收藏  举报