我想从数组中删除相同的值。 例如: 这是阵列。
Array ( [0] => 1 [1] => 63 [2] => 1 )
核心php中是否有任何函数或东西只返回不重复的值,即索引号1和删除索引0和2 的值,我想要结果
Array ( [1] => 63)
有什么办法吗?
答案 0 :(得分:4)
您可以使用array_filter()和array_count_values()来检查计数是否大于1。
<?php
$data = [1, 63, 1];
$data = array_filter($data, function ($value) use ($data) {
return !(array_count_values($data)[$value] > 1);
});
print_r($data);
<强>结果:强>
Array
(
[1] => 63
)
使用多个欺骗行为也可以正常工作:https://3v4l.org/eJSTY
答案 1 :(得分:1)
一种选择是使用array_count_values
来计算值。循环并仅推送1
值
$arr = array(1,63,1);
$arrKey = array_flip( $arr ); //Store the key
$result = array();
foreach( array_count_values($arr) as $k => $v ) {
if ( $v === 1 ) $result[ $arrKey[$k] ] = $k;
}
echo "<pre>";
print_r( $result );
echo "</pre>";
这将导致:
Array
(
[1] => 63
)
答案 2 :(得分:1)
我认为最好的解决方案如下:
function removeDuplicates(array $initialArray) : array
{
// Remove duplicate values from an array
$uniqueValues = array_unique($initialArray);
// Computes the difference of arrays with additional index check
$duplicateValues = array_diff_assoc($initialArray, $uniqueValues);
// Removed any values in both arrays
return array_diff($uniqueValues, $duplicateValues);
}
此解决方案在PHP中使用以下功能:
答案 3 :(得分:0)
您可以将array_keys()与搜索值一起用作第二个参数,以查看值存在的次数。
$array = [1, 63, 1, 12, 64, 12];
$new = [];
foreach ($array as $value) {
// Get all keys that have this value. If there's only one, save it.
if (count(array_keys($array, $value)) == 1) {
$new[] = $value;
}
}
与其他答案相比,我不知道这种表现。我把剖析留给别人。