寻找最常见的" PHP中的数组?

时间:2015-12-07 02:17:55

标签: php arrays integer

我需要找到一个最常见的" PHP中给定数组的数组(我甚至不确定该术语应该是什么。我的意思是一个数组,其元素可以按顺序组合以形成输入数组的相同元素)。输入数组可能有不同的count()结果,但它们总是一维的,总是只包含整数,并且总是具有相同的array_sum()结果。

示例:

$a = array(4,6);
$b = array(5,5);
$c = array(5,1,4);

查找(在本例中)此数组的最佳方法是什么

$gca = array(4,1,1,4);

1 个答案:

答案 0 :(得分:0)

在总计中转换这些数字后,事情变得更加容易,而不是使用间隔/持续时间。这样,原始数组变成了这些:

$a = array(4,10);
$b = array(5,10);
$c = array(5,6,10);

然后,在将元素转换回间隔之前,需要合并数组,删除重复值和排序。拟议函数的输出是

array(4,1,1,4)

按预期。

对此功能的任何改进表示赞赏。

$arr[] = array(4,6);
$arr[] = array(5,5);
$arr[] = array(5,1,4);

function findCommonDurations($arr) {
    $absolute_result = $result = array();
    foreach($arr as $key => $value) {
        $temp_arr = array();
        $so_far = 0;
        foreach($value as $key2 => $value2) {
            $temp_arr[] = $value2 + $so_far;
            $so_far += $value2;
        }
        $absolute_result = array_merge($absolute_result, $temp_arr);
    }
    $absolute_result = array_unique($absolute_result);
    sort($absolute_result);

    $result[0] = $absolute_result[0];
    for ($i = 1, $n = count($absolute_result); $i < $n; $i++) {
        $result[] = $absolute_result[$i] - $absolute_result[$i-1];
    }
    return($result);
}

print_r(findCommonDurations($arr));