Php 数组中的和数

Php 数组中的和数,php,Php,我有一个zipcode区域的数字数组,如: Array ( [0] => 34 [1] => 35 [2] => 36 [3] => 51 [4] => 53 [5] => 54 [6] => 55 [7] => 56 [8] => 57 [9] => 60 [10] => 61 [11] => 63 [12] =>

我有一个zipcode区域的数字数组,如:

Array (
    [0] => 34
    [1] => 35
    [2] => 36
    [3] => 51
    [4] => 53
    [5] => 54
    [6] => 55
    [7] => 56
    [8] => 57
    [9] => 60
    [10] => 61
    [11] => 63
    [12] => 64
    [13] => 65
    [14] => 66
    [15] => 67
    [16] => 68
    [17] => 69
    [18] => 74
    [19] => 97
)
我想对数组中的数字求和,如下所示:

Array (
    [0] => 34-36
    [1] => 51
    [2] => 53-57
    [3] => 60-61
    [4] => 63-69
    [5] => 74
    [6] => 97
)

我如何用PHP来归档呢?

下面是获取所需输出的逻辑

$arr = array (34,35,36,51,53,54,55,56,57,60,61,63,64,65,66,67,68,69,74,97);

$sum_arr = array();
$prev_val = 0;

foreach($arr as $key => $val)
{
    /* Store initial value in array */
    if($key == 0)
    {
        $sum_arr[] = $val;


    }
    /* If value is not sequence */
    else if(($prev_val+1) != $val)
    {
        /* Get last index of array and append current value */
        $sum_last_idx = count($sum_arr) - 1;

        /* Append value only if both values are not equal */
        if($sum_arr[$sum_last_idx] != $prev_val)
        {
            $sum_arr[$sum_last_idx] = $sum_arr[$sum_last_idx] . '-' . $prev_val;
        }
        $sum_arr[] = $val;
    }

    /* Retain previous value */
    $prev_val = $val;
}

print_r($sum_arr);
输出

Array
(
    [0] => 34-36
    [1] => 51
    [2] => 53-57
    [3] => 60-61
    [4] => 63-69
    [5] => 74
    [6] => 97
)

从逻辑上讲,在php的帮助下,您可以获得所需的输出

$zipArr = array ("0" => 34,"1" => 35,"2" => 36,"3" => 51,"4" => 53,"5" => 54,"6" => 55,"7" => 56,"8" => 57,"9" => 60,"10" => 61,"11" => 63,"12" => 64,"13" => 65,"14" => 66,"15" => 67,"16" => 68,"17" => 69,"18" => 74,"19" => 97,); 

$range = range(10,100,10);
print_r($zipArr);
$new_arr = [];
foreach($range as $rValue){
    $tmpArr = [];
    foreach($zipArr as $zipValue){
        if($zipValue%$rValue < 10){
            $tmpArr[] = $zipValue;
        }
    }
    if(!empty($tmpArr)){
        if(count($tmpArr) > 1){
            $new_arr[] =($tmpArr[0] ." - ".end($tmpArr));
        } else {
            $new_arr[] =($tmpArr[0]);           
        }
    }
}
$new_arr = array_unique($new_arr);   
print_r($new_arr);

请详细说明,你想要什么还不清楚。。。也许可以解释一下情况,比如你想根据数字是否连续来分组。这实际上是一个简单的任务,涉及循环和if语句。你能告诉我们到目前为止你已经尝试了什么吗?基本上它并不是求和,它的连续元素分组很好,但其他数字的行为很奇怪:array22,23,24变成array22,array01,03,04,06,07,08,09,95,99变成array1,3-4,6-7,0,0,95,99,array84,92,93,94变成array84,92
Array
(
    [0] => 34 - 36
    [1] => 60 - 69
    [3] => 51 - 57
    [5] => 74
    [6] => 97
)