我在用array_unique
删除数组中的重复值。但是,问题是array_unique
检查重复项时不考虑数据类型。例如:
$a = [1, true, null, false];
$u = array_unique($a);
var_dump($u);
Outputs:
array(2) {
[0] =>int(1)
[2] =>NULL
}
但是,如果考虑数据类型,数组的每个值都是唯一的。我知道我可以通过运行循环来解决这个问题。但是,有没有更好的方法或替代方案array_unique
我可以通过什么来实现这一点?
我想出了这个似乎有效的解决方案:
<?php
function array_really_unique($array){
foreach ($array as $key => $item){
foreach ($array as $key2 => $item2)
if ($key2 != $key && $item2 === $item)
unset($array[$key]);
}
return $array;
}
$a = [1, true, null, false, false, false, true, null, 2, 3, "hi", 2];
$u = array_really_unique($a);
var_dump($u);
?>
Result:
数组(7) { [0]=> int(1) [5]=> bool(false) [6]=> bool(true) [7]=> NULL [9]=> int(3) [10] => string(2) "hi" [11]=> int(2) }
它不是那么优雅,可能也不是那么快,但似乎可以工作。
它将仅保留数组中的最后一个值。
工作示例:example
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)