php数组排序与下一个值差异

时间:2015-09-24 13:57:42

标签: php arrays multidimensional-array

任何人都可以帮助我进行以下数组排序

输入

$array=array(1,2,3,6,7,8,100,101,200);

输出:

$new_array=array(
    0=>array(1,2,3),
    1=>array(6,7,8),
    2=>array(100,101),
    3=>array(200)
);

提前致谢!

3 个答案:

答案 0 :(得分:0)

 err = datastore.RunInTransaction(c, func(c appengine.Context) error {
        incompleteKey := datastore.NewIncompleteKey(c, ENTITY_TYPE, nil)
        entityKey, err := datastore.Put(c, incompleteKey, &MyStruct)
        if(err != nil) {
            return err
        }

        MyStruct.SelfID = entityKey.IntID()
        _, err = datastore.Put(c, entityKey, &MyStruct)

        return err
    }, nil)

答案 1 :(得分:0)

您可以遍历数组并检查到数组中下一个元素的距离。如果此距离较大,则添加一个新的子数组:

   SurfaceTexture surfaceTexture = new SurfaceTexture(10);
    Camera camera = Camera.open();
    camera.getParameters().setPreviewSize(1, 1);
    camera.setPreviewTexture(surfaceTexture);

使用$array=array(1,2,3,6,7,8,100,101,200); $result=array(array()); for($i=0; $i<count($array)-1; $i++) { if($array[$i+1]-$array[$i]==1) { // If difference to next number is one -> push array_push($result[count($result)-1], $array[$i]); } else { // ... else: Push and create new array for the next element array_push($result[count($result)-1], $array[$i]); array_push($result, array()); } } // Push the last number array_push($result[count($result)-1], $array[$i]); print_r($result); ...

的另一种方法

答案 2 :(得分:0)

非常简单:循环显示数字,记住最后一个数字,如果当前数字不是最后一个数字的后继者,则在结果中添加一个新数组,然后推入结果中的最后一个数组。

$result = [];
$last = null;

foreach ($array as $number) {
    if ($last !== $number - 1) {
        $result[] = [];
    }
    $result[count($result) - 1][] = $number;
    $last = $number;
}

您甚至可以删除$last并直接读取$result 的最后一个数组元素的最后一个数组元素,但这会使代码实际上更复杂。