我需要从数组中多次出现的数组中删除值。
例如:
$value = array(5,8);
我需要这个结果:
function add<T extends ?>(v1: T, v2: T): T {
return v1 + v2;
}
php中是否有内置函数?
答案 0 :(得分:4)
如果您愿意,可以使用数组函数并抛弃foreach循环:
这是一个单行:
代码:
$value=[10,10,5,8];
var_export(array_keys(array_intersect(array_count_values($value),[1])));
输出:
array (
0 => 5,
1 => 8,
)
这将值计为数组,然后使用array_intersect()
仅保留出现一次的值,然后将键转换为零索引数组的值。
答案 1 :(得分:3)
您可以使用array_count_values()
和foreach
循环执行此操作:
<?php
$input = array(10,10,5,8);
$output = array();
foreach(array_count_values($input) as $value => $count)
{
if($count == 1)
{
$output[] = $value;
}
}
var_dump($output);
输出:
array(2) {
[0]=>
int(5)
[1]=>
int(8)
}
答案 2 :(得分:2)
我会使用array_count_values来获取数组中每个元素出现频率的数组。然后从原始数组中删除多次出现的所有元素。
答案 3 :(得分:1)
可能的方法:
$value = array(10,10,5,8);
$output = array_keys(
array_filter(
array_count_values($value),
function ($count) {
return $count == 1;
}
)
)
array_count_values()
生成一个数组,该数组与$value
中每个唯一值相关联,显示在数组中的次数。
array_filter()
仅在此结果中保留仅在原始数组中出现一次的条目(键)。
array_keys()
会产生所需的结果。
答案 4 :(得分:1)
您需要使用array_count_values(),array_search()和unset()函数。
<?php
$value = array(10,10,5,8);
echo '<pre>';print_r($value);echo '</pre>';
$cnt = array_count_values($value);
$dup = array();
foreach ($cnt as $k => $repeated) {
if ($repeated > 1) {
if(($key = array_search($k, $value)) !== false) {
unset($value[$key]);
}
}
}
echo '<pre>';print_r($cnt);echo '</pre>';
echo '<pre>';print_r($value);echo '</pre>';
?>
答案 5 :(得分:0)
$value=array(10,10,5,8);
$duplicated=array();
foreach($value as $k=>$v)
{
if($kt=array_search($v,$value))!==false and
$k!=$kt)
{if (count(array_keys($array, $value)) > 1)
{
/* Execute code */
}
unset($value[$kt];$duplicated[]=$v;
}
}
$result=array_diff($values,$duplicated);
print_r($result);
输出
阵列([2] =→5 [3] =&GT; 8)