Php 基于增量数值的拆分数组

Php 基于增量数值的拆分数组,php,arrays,Php,Arrays,给定一个数组(),如下所示: 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 ne

给定一个
数组()
,如下所示:

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
        )

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

(工作示例)

$exploded=array(
'1',
“Lorem ipsum”,
“多洛坐”,
“艾美”,
'2',
"奉献",,
“另类精英”,
“另类精英”,
'3',
“整数nec”,
“奥迪奥”
);
$array=array();
$a=假;
$count=1;
$arraycount=计数($exploded);
对于($i=0;$i<$arraycount;$i++)
{
$countstring=$count+1;
$countstring=(string)$countstring;
如果($分解[$i]==$count)
{
$array[$count][=$i];
$a=正确;
}
elseif($a==true&&$exploded[$i]==(字符串)$count)
{
$array[$count][=$i];
}
elseif($a==true&&$exploded[$i+1]!=$countstring)
{
$array[$count][=$i];
}
elseif($a==true&&$exploded[$i+1]==$countstring)
{
$array[$count][=$i];
$count++;
$a=假;
}
}

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

$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];
}

$array=array();
$count=-1;
$nextcount=1;
$arraycount=计数($exploded);
对于($i=0;$i<$arraycount;$i++){
如果($分解[$i]==$nextcount){
$count++;
$nextcount++;
}
$array[$count][=$i];
}

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

$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];
}

$array=array();
$count=-1;
$nextcount=1;
$arraycount=计数($exploded);
对于($i=0;$i<$arraycount;$i++){
如果($分解[$i]==$nextcount){
$count++;
$nextcount++;
}
$array[$count][=$i];
}

每个数字之间是否总是有三行文本?否。每个数字之间也有动态的文本行数。有人可能会告诉你,因为代码是有效的。
$spolded
是否来自你“分解”的字符串?如果是这样的话,我们能看到那根绳子吗?@NickParsons是的,好主意。原始字符串仅为
1 Lorem ipsum dolor sit amet 2 Concertetur Adipising elit Adipising elit 3整数nec odio
I在空格处分解@shingo也是一个好主意,我将在那里发布一篇文章,并很快删除这篇文章。每个数字之间总是有三行文字吗?没有。每个数字之间也有动态的文字行数。有人可能会告诉你,因为代码是有效的。
$exploded
是否来自你“分解”的字符串?如果是这样的话,我们能看到那根绳子吗?@NickParsons是的,好主意。原始字符串仅为
1 Lorem ipsum dolor sit amet 2 Concertetur Adipising elit Adipising elit 3整数nec odio
I在空格处分解@shingo也是个好主意,我会在那里发一篇帖子,并很快删除这篇。只需提醒一下,这将从
2
而不是
1
开始你的数组。您可以将
$array[$count][]
更改为
$array[$count-1][]
以解决此问题,谢谢。这是正确的。当然,
$array=array\u值($array)
0开始
darn obiwans。修正。只需一个提示,这将在
2
而不是
1
启动阵列。您可以将
$array[$count][]
更改为
$array[$count-1][]
以解决此问题,谢谢。这是正确的。当然,
$array=array\u值($array)
0开始
darn obiwans。固定的。