Php 获取单个数组中的公共值数
我想从一个数组中获取公共数量的值。请检查以下数组Php 获取单个数组中的公共值数,php,arrays,Php,Arrays,我想从一个数组中获取公共数量的值。请检查以下数组 array(111) { [0]=> int(1807) [1]=> int(3013) [2]=> int(2989) [3]=> int(1815) [4]=> int(2993) [5]=> int(1807) [6]=> int(2999) [7]=> int(3003) [8]=> int(1815) [9]=> int(3009)
array(111) {
[0]=> int(1807)
[1]=> int(3013)
[2]=> int(2989)
[3]=> int(1815)
[4]=> int(2993)
[5]=> int(1807)
[6]=> int(2999)
[7]=> int(3003)
[8]=> int(1815)
[9]=> int(3009)
[10]=> int(3013)
}
如您所见,以下是常见项目:
- 0和5
- 1和10
- 3和8
array(1807, 3013, 1815)
需要明确的是,它在这里不起作用,因为它会从数组中删除重复项。我不想删除重复项,我想删除非重复项。我不确定,如果使用php内置数组函数可以更轻松地完成这项工作,但是使用两个临时数组变量的简单for循环就可以完成这项工作
$array = [1,1,2,3,4,4];
$t = [];
$double = [];
foreach ($array as $item) {
if (isset($t[$item])) {
$double[$item] = true;
}
$t[$item] = true;
}
$values = array_keys($double);
再次考虑了没有显式循环的其他解决方案,并使用array\u reduce
$array = [1,1,2,3,4,4];
$values = [];
sort($array);
array_reduce($array, function($last, $current) use (&$values) {
return $last == $current ? $values[$current] = $current : $current;
}, false);
print_r($values);
我不确定,使用php内置数组函数是否可以更容易地实现这一点,但是一个带有两个临时数组变量的简单for循环就可以完成这项工作
$array = [1,1,2,3,4,4];
$t = [];
$double = [];
foreach ($array as $item) {
if (isset($t[$item])) {
$double[$item] = true;
}
$t[$item] = true;
}
$values = array_keys($double);
再次考虑了没有显式循环的其他解决方案,并使用array\u reduce
$array = [1,1,2,3,4,4];
$values = [];
sort($array);
array_reduce($array, function($last, $current) use (&$values) {
return $last == $current ? $values[$current] = $current : $current;
}, false);
print_r($values);
请尝试以下操作:
$arr = array(
1807,
3013,
2989,
1815,
2993,
1807,
2999,
3003,
1815,
3009,
3013,
);
$arr2 = $arr;
$recurring = [];
foreach($arr2 as $key => $value)
{
unset($arr2[$key]);
if(in_array($value, $arr2) && !in_array($value, $recurring))
{
$recurring[] = $value;
}
}
var_dump($recurring);
这将为您提供$recurtive
变量内部的所有定期值。但是请确保不要在循环中迭代主数组,而是像$arr2=$arr代码>请尝试以下操作:
$arr = array(
1807,
3013,
2989,
1815,
2993,
1807,
2999,
3003,
1815,
3009,
3013,
);
$arr2 = $arr;
$recurring = [];
foreach($arr2 as $key => $value)
{
unset($arr2[$key]);
if(in_array($value, $arr2) && !in_array($value, $recurring))
{
$recurring[] = $value;
}
}
var_dump($recurring);
这将为您提供$recurtive
变量内部的所有定期值。但是请确保不要在循环中迭代主数组,而是像$arr2=$arr代码>您需要的只是副本
试试这个:
$duplicates= array();
foreach(array_count_values($arr) as $val => $c)
if($c > 1) $duplicates[] = $val;
return $duplicates;
你想要的只是复制品
试试这个:
$duplicates= array();
foreach(array_count_values($arr) as $val => $c)
if($c > 1) $duplicates[] = $val;
return $duplicates;
您可以简单地使用array\u unique
和array\u diff\u assoc
功能。这里有一个例子
$array = [1,2,3,1,2];
$unique_array = array_unique($array);
$array = array_diff_assoc($array, $unique_array);
$array = $array_unique($array);
print_r($array);
输出:
Array ( [3] => 1 [4] => 2 )
您可以简单地使用array\u unique
和array\u diff\u assoc
功能。这里有一个例子
$array = [1,2,3,1,2];
$unique_array = array_unique($array);
$array = array_diff_assoc($array, $unique_array);
$array = $array_unique($array);
print_r($array);
输出:
Array ( [3] => 1 [4] => 2 )
您的意思是,重复编号?可能重复@mega6382是,这是常见的。@LearningROR否将从数组中删除重复值。@ZainHail如果提供的任何解决方案有效,请接受它。您的意思是,重复编号?可能重复@mega6382是,这是常见的解决方案。@LearningROR No,它将从数组中删除重复的值。@ZainShail如果提供的任何解决方案有效,请接受它。它可以处理2个重复的值。但不适用于3个副本。它适用于2个副本。但不适用于3个重复数。在差异之后需要一个额外的数组_unique,否则同一项将有多个值,请尝试:[1807、1、222、222、3013、2989、1807、1807、2989、3012]在差异之后需要一个额外的数组_unique,否则同一项将有多个值,请尝试:[1807, 1 , 222, 222, 3013, 2989, 1807, 1807, 2989, 3012]