在数组中查找重复值并将它们保存在单独的数组中

时间:2017-11-20 23:35:00

标签: php arrays duplicates

有点奇怪的,所以我希望得到一个数组中的所有重复项,并将它们中的每一个保存在一个单独的数组中。这有点难以解释所以我会尝试一个例子。

$array = array('apple', 'apple', 'apple', 'orange', 'orange', 'banana');

我希望找到所有重复项(在这个例子中,苹果和橙子)并将每个重复保存在它们自己的单独数组中,之后将对其进行计数,以找出每个数组中每个副本的数量。< / p>

一旦我计算了它们,我将根据找到的数量运行一个mysqli查询(同一项目最多只能有6个)。

理想的输出示例是

$array1 to be ('apple', 'apple', 'apple'), $array2 to be ('orange', 'orange') and $array3 would be ('banana')

如果这个问题没有多大意义,我会提前道歉,但我很难解释。

2 个答案:

答案 0 :(得分:1)

$count = [];
$array = ['apple', 'apple', 'apple', 'banana', 'banana', 'orange', 'orange'];

foreach ($array as $a) {
    $count[$a]++;
}

print_r($count);
  

阵列(       [apple] =&gt; 3       [banana] =&gt; 2       [orange] =&gt; 2)

然后你可以使用key =&gt;循环遍历一个数组;获得水果的价值#39;和发生。

编辑:如果您不区分大小写搜索,则需要大写/小写密钥。

答案 1 :(得分:1)

可以使用array_count_values()array_fill()函数

完成此操作
$array = array('apple', 'apple', 'apple', 'orange', 'orange', 'banana');

// counts all the values
$count = array_count_values($array);

// result array
$result = array();

// Loop and push new array filled with values times count
foreach ($count as $key => $value) {
    $result[] = array_fill(0, $value, $key);
}

// Print result
echo '<pre>';
print_r($result);