我的数组是:
$array= array(4,3,4,3,1,2,1);
我想将其输出如下:
Output = 2
(因为2仅出现一次)
这是我尝试过的:
$array = array(4, 3, 4, 3, 1, 2, 1);
$array1 = array(4, 3, 4, 3, 1, 2, 1);
$array_diff = array_diff($array, $array1);
最佳答案
单线无循环:(Demo)
var_export(array_keys(array_intersect(array_count_values($array),[1])));
细目:
array_keys( // return the remaining keys from array_count_values
array_intersect( // filter the first array by second
array_count_values($array), // count number of occurrences of each value
[1] // identify the number of occurrences to keep
)
)
如果您(或任何将来的读者)想要保留更多值,请替换
array_intersect()
中的第二个参数/数组。例如:
您想保留1,2和3:
array(1,2,3)
或[1,2,3]
ps。为了便于记录,您可以将
array_filter()
与自定义函数一起使用,以忽略所有非1计数值,但是我使用了array_intersect()
,因为语法更简短并且IMO更易于阅读。ps。以为我会重新访问并包括PHP7.4技术,并与其他基于函数的技术进行比较...
代码:(Demo)
$numbers = [4, 3, 4, 3, 1, 2, 1];
var_export(
array_keys(
array_intersect(
array_count_values($numbers),
[1]
)
)
);
echo "\n---\n";
var_export(
array_keys(
array_filter(
array_count_values($numbers),
function($count) {
return $count === 1;
}
)
)
);
echo "\n---\n";
// PHP7.4+
var_export(
array_keys(
array_filter(
array_count_values($numbers),
fn($count) => $count === 1
)
)
);
关于php - 在数组中查找非重复元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43015438/