PHP中使用array_unique()函数去除数组中重复的元素
数组是一个在PHP中十分常见的数据结构,然而数组中有时会出现重复的元素。如果我们需要在数组中保留数组项的 性,就需要使用处理重复元素的方法来去除数组中的重复元素。在PHP中,我们可以使用array_unique()函数来实现这个目的。
array_unique()函数
array_unique(array $array [, int $sort_flags = SORT_STRING]): array
此函数可用于去除数组中重复的值。参数$array是一个待处理数组,$sort_flags排序方式的参数不是必需的。该函数返回一个新的数组,包括去重后的数据项,并且索引保持不变。
示例
$array = array('blue', 'red', 'green', 'blue', 'yellow', 'red');
$result = array_unique($array);
print_r($result);
输出结果为:
Array
(
[0] => blue
[1] => red
[2] => green
[4] => yellow
)
从结果上可以看出,array_unique()函数去除了$ array数组中的重复数据项。值得一提的是,这个函数并不会重新排序数组中的元素。
如果需要对数组中的元素按照一定规则进行排序(比如按照字母表顺序排序),可以使用$sort_flags参数来指定排序方式。值得注意的是,PHP可支持的排序参数的类型并不多,常用的类型为SORT_STRING和SORT_NUMERIC两种。
示例
$array = array('apple','banana','lemon','orange','banana','pineapple');
$result = array_unique($array,SORT_STRING);
print_r($result);
输出结果为:
Array
(
[0] => apple
[1] => banana
[2] => lemon
[3] => orange
[5] => pineapple
)
array_unique()函数会过滤掉重复的数组项,但却并不会返回去掉重复后的索引,而是返回一个从0开始的新数组。在实际使用中,如果需要保留原索引,可以通过array_flip()函数对数据键进行翻转来实现。
示例
$array = array('apple','banana','lemon','orange','banana','pineapple');
$flipArr = array_flip($array);
$result = array_flip(array_unique($flipArr));
print_r($result);
输出结果为:
Array
(
[apple] => 0
[banana] => 1
[lemon] => 2
[orange] => 3
[pineapple] => 5
)
最后再简单说明一下,即使在使用array_unique()函数后,仍然需要注意代码的优化以及数据安全问题。在实际编写代码时,务必注意数据的来源,尽量提供防护措施,避免产生XSS攻击或是SQL注入等安全问题。同时,代码的质量优化也很重要,比如使用缓存技术来避免频繁的访问数据库和重复计算等问题。
