array_unique
是 PHP 中用于移除数组中重复元素的函数
-
使用
array_flip
和array_keys
:当数组中的值都是整数或字符串时,可以使用
array_flip
和array_keys
函数来实现类似array_unique
的功能。这种方法通常比使用array_unique
更快,因为它避免了内部排序操作。function array_unique_alt($array) { return array_keys(array_flip($array)); }
-
使用关联数组:
如果你在处理大量数据,可以考虑使用关联数组来存储唯一值。这样,你可以在 O(1) 时间复杂度内检查元素是否已经存在。
function array_unique_assoc($array) { $result = []; foreach ($array as $value) { if (!isset($result[$value])) { $result[$value] = true; } } return array_keys($result); }
-
使用
foreach
循环:如果你不介意使用更多的内存,可以使用
foreach
循环来遍历数组并将唯一值添加到新数组中。这种方法通常比使用array_unique
更快,因为它避免了内部排序操作。function array_unique_foreach($array) { $result = []; foreach ($array as $value) { if (!in_array($value, $result)) { $result[] = $value; } } return $result; }
-
使用
SplFixedArray
:如果你的 PHP 版本 >= 5.3,可以考虑使用
SplFixedArray
来提高性能。SplFixedArray
是一个固定大小的数组,它提供了类似于普通数组的接口,但在某些情况下性能更好。function array_unique_spl($array) { $splArray = new SplFixedArray(count($array)); $index = 0; foreach ($array as $value) { if (!$splArray->offsetExists($value)) { $splArray->offsetSet($value, true); $splArray->offsetSet($index++, $value); } } return $splArray->toArray(); }
请注意,这些优化方法可能在不同场景下表现不同。在实际应用中,建议根据具体需求和数据类型进行测试和调整。