【问题标题】:Find duplicate values in array and save them in a separate array在数组中查找重复值并将它们保存在单独的数组中
【发布时间】:2017-11-21 16:49:43
【问题描述】:

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

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

我正在寻找所有重复项(在本例中为苹果和橙子),并将每个项保存在各自单独的数组中,然后计算该数组以找出每个数组中存在的每个重复项的数量。

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

一个理想的输出示例是

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

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

【问题讨论】:

  • 逻辑很简单,你试过什么?需要提示:stackoverflow.com/questions/3450022/…
  • @LawrenceCherone 在发布我自己的问题之前,我确实看到了该帖子,但这似乎并不能解决我的问题。我不是要计算这些值,而是要从本质上将数组拆分为各种数组,每个新的“拆分”数组都包含每个重复项(如我的示例输出中所述)。请问您认为有什么方法可以实现吗?

标签: php arrays duplicates


【解决方案1】:
$count = [];
$array = ['apple', 'apple', 'apple', 'banana', 'banana', 'orange', 'orange'];

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

print_r($count);

数组 ( [苹果] => 3 [香蕉] => 2 [橙色] => 2)

然后,您可以循环遍历具有 key => 值的一个数组,以获得“水果”和出现次数。

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

【讨论】:

  • 这看起来确实可行。如果不知道所讨论的“水果”,这也可行吗?因此,假设列表中也有猕猴桃,还有一些西红柿,但都没有被选中,我是否还需要遍历这些以检查数组中是否有任何出现?对不起,我(显然)对数组很糟糕
【解决方案2】:

这可以通过 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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-12-27
    • 1970-01-01
    • 2012-08-09
    • 2019-05-28
    • 2022-11-20
    • 1970-01-01
    • 2021-03-18
    • 1970-01-01
    相关资源
    最近更新 更多