代码之家  ›  专栏  ›  技术社区  ›  Brian Bruman

基于增量数值的拆分数组

  •  0
  • Brian Bruman  · 技术社区  · 7 年前

    array() 这样地:

    Array
    (
        [0] => 1
        [1] => Lorem ipsum
        [2] => dolor sit
        [3] => amet
        [4] => 2
        [5] => consectetur
        [6] => adipiscing elit
        [7] => adipiscing elit
        [8] => 3
        [9] => Integer nec
        [10] => odio
    )
    

    用一组动态的数字( 1 , 2 , 3 , 4 , 5

    有什么更有效的方法可以达到这样的效果,

    Array
    (
        [1] => Array
            (
                [0] => 1
                [1] => Lorem ipsum
                [2] => dolor sit
                [3] => amet
            )
    
        [2] => Array
            (
                [0] => 2
                [1] => consectetur
                [2] => adipiscing elit
                [3] => adipiscing elit
            )
    
        [3] => Array
            (
                [0] => 3
                [1] => Integer nec
                [2] => odio
            )
    
    )
    

    其中,递增的数组值充当拆分点,将数组拼接成单独的块:

    (工作示例) https://3v4l.org/EqnIN

    $exploded = array(
        '1',
        'Lorem ipsum',
        'dolor sit',
        'amet',
        '2',
        'consectetur',
        'adipiscing elit',
        'adipiscing elit',
        '3',
        'Integer nec',
        'odio'
    );
    
    $array = array();
    $a = false;
    $count = 1;
    $arraycount = count($exploded);
    
    for ($i = 0; $i < $arraycount; $i++)
        {
        $countstring = $count + 1;
        $countstring = (string)$countstring;
        if ($exploded[$i] == $count)
            {
            $array[$count][] = $exploded[$i];
            $a = true;
            }
        elseif ($a == true && $exploded[$i] == (string)$count)
            {
            $array[$count][] = $exploded[$i];
            }
        elseif ($a == true && $exploded[$i + 1] != $countstring)
            {
            $array[$count][] = $exploded[$i];
            }
        elseif ($a == true && $exploded[$i + 1] == $countstring)
            {
            $array[$count][] = $exploded[$i];
            $count++;
            $a = false;
            }
        }
    
    1 回复  |  直到 7 年前
        1
  •  3
  •   jhnc    7 年前

    我认为这应该等同于您的代码:

    $array = array();
    $count = -1;
    $nextcount = 1;
    $arraycount = count($exploded);
    
    for ($i = 0; $i < $arraycount; $i++) {
        if ($exploded[$i] == $nextcount) {
            $count++;
            $nextcount++;
        }
        $array[$count][] = $exploded[$i];
    }
    
    
    推荐文章