如何用PHP获取所有可能的数组块? [关闭]

I have an array for example 2,3,4,10,20,30,102

I need all possible 3 consecutive elements array like below

2,3,4
3,4,10
4,10,20
10,20,30
20,30,102
    $arr= array(2,3,4,10,20,30,102);
    $arr2=$arr;
    $arr3=array();    
    while(count($arr2)>=3)
    {
        $array= array_chunk($arr2, 3);
        if(count($array)>0)
        {
            array_push($arr3, $array[0]);
            array_shift($arr2);
        }
    }   
    var_dump($arr3);

$arr3 is what you want.

I assumed you need all 3-element chunks :

$array = array(2,3,4,10,20,30,102);
$return = array();
for ($i=0; $i<=count($array)-3; $i++)
    $return[] = array($array[$i], $array[$i+1], $array[$i+2]);

Use array_slice() function to get n values from any index:

$array = array(2,3,4,10,20,30,102);
for ($i=0; $i<=count($array)/2 + 1; $i++) {
    echo implode(",",array_slice($array,$i,3))."<br/>";
}

Output:

2,3,4
3,4,10
4,10,20
10,20,30
20,30,102

I found the solution:

$chunk=[];

function getGroups($array, $gn){

    global $chunk;

    $ch = [];

    for($i=0;$i<$gn;$i++){
        $ch[] = $array[$i];
    }

    $chunk[] = $ch;

    $fe = array_shift($array);

    if (count($array) >= $gn){
        getGroups($array, $gn);
    }

    return $chunk;

}
$work = [2,3,4,5,6,7,8,9,10];
$K = 3;

$c = getGroups($work, $K);
<?php
$items        = array(2,3,4,10,20,30,102);
$items_count  = count($items);
for($i=0; $i <= $items_count - 3; $i++) {
    $result[] = array_slice($items, $i, 3);
}
var_export($result);

Output:

array (
  0 => 
  array (
    0 => 2,
    1 => 3,
    2 => 4,
  ),
  1 => 
  array (
    0 => 3,
    1 => 4,
    2 => 10,
  ),
  2 => 
  array (
    0 => 4,
    1 => 10,
    2 => 20,
  ),
  3 => 
  array (
    0 => 10,
    1 => 20,
    2 => 30,
  ),
  4 => 
  array (
    0 => 20,
    1 => 30,
    2 => 102,
  ),
)