【问题标题】:repeating numbers array, php重复数字数组,php
【发布时间】:2018-08-02 12:29:44
【问题描述】:

我只有一个数组的代码,如何为等 15 或 20 个数字数组设置此代码,为每个数组找到重复数字?

<?php

function printRepeating($arr, $size)
{
    $i;
    $j;
    echo " Repeating elements are ";

    for($i = 0; $i < $size; $i++)
        for($j = $i + 1; $j < $size; $j++)
            if($arr[$i] == $arr[$j])
                echo $arr[$i], " ";
} 

$arr = array(6, 21, 54, 54, 23, 65, 48);
$arr_size = sizeof($arr, 0);
printRepeating($arr, $arr_size);
?>

【问题讨论】:

  • 循环调用printRepeating($arr, $arr_size);
  • 您的意思是对所有组合数组重复数字还是只想运行 15 次或 20 次?

标签: php arrays numbers


【解决方案1】:

我相信您正在尝试做的事情已经被array_count_values实现了

$arr = array(6, 21, 54, 54, 23, 65, 48);
$countValues = array_count_values($arr); // create map of values to number of appearances
var_dump($countValues);
/*
array(6) {
  [6]=>
  int(1)
  [21]=>
  int(1)
  [54]=>
  int(2)
  [23]=>
  int(1)
  [65]=>
  int(1)
  [48]=>
  int(1)
}
 */
$duplicates = array_filter($countValues, function($value) {
    return $value > 1;
}); // keep only duplicates (value > 1)
var_dump($duplicates);
/*
array(1) {
  [54]=>
  int(2)
}
 */

【讨论】:

  • @jmatesic 这对您有帮助还是有其他问题?
【解决方案2】:

通过使用 array_count_values 和 array_diff,您可以获得所有重复的数字。
由于密钥是我在内爆时使用 array_keys 的数字。

$arr = array(6, 65, 21, 54, 54, 23, 65, 48);
$count = array_count_values($arr);

$repeating = array_diff($count, [1]); // find what is not 1 ( 1 is unique values, anything higher is a repeating number)
echo "repeating values are " . implode(" " , array_keys($repeating));

输出

repeating values are 65 54

https://3v4l.org/V7d7d

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-11
    • 2016-12-24
    • 1970-01-01
    • 1970-01-01
    • 2013-09-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多