繁体   English   中英

根据值将数组拆分为多个数组 - PHP

[英]Split an array into mutiple arrays based on a value - PHP

到目前为止我尝试过的:我有一个如下所示的数组,我想要做的是,根据值BEGIN_DAY创建多个数组:

Array
(
    [0] => Array
        (
            [0] => BEGIN_DAY
            [1] => 15
        )

    [1] => Array
        (
            [0] => 20130701
            [1] => 4
            [2] => 4
            [3] => 3060
            [4] => 1
        )

    [2] => Array
        (
            [0] => 20130702
            [1] => 270
            [2] => 757
            [3] => 13812810
            [4] => 4
        )

    [3] => Array
        (
            [0] => 20130703
            [1] => 5
            [2] => 123
            [3] => 3894971
            [4] => 2
        )

    [4] => Array
        (
            [0] => 20130704
            [1] => 290
            [2] => 478
            [3] => 5119617
            [4] => 1
        )
    [5] => Array
        (
            [0] => END_DAY
            [1] => 15
        )
    [6] => Array
        (
            [0] => BEGIN_DAY
            [1] => 16
        )
     [7] => Array
        (
            [0] => 20130704
            [1] => 290
            [2] => 478
            [3] => 5119617
            [4] => 1
        )

等等...我想把这个数组分成多个不同的数组,当它从BEGIN_DAY开始时所以它应该是这样的:第一个:

 Array
(
    [0] => Array
        (
            [0] => BEGIN_DAY
            [1] => 15
        )

    [1] => Array
        (
            [0] => 20130701
            [1] => 4
            [2] => 4
            [3] => 3060
            [4] => 1
        )

    [2] => Array
        (
            [0] => 20130702
            [1] => 270
            [2] => 757
            [3] => 13812810
            [4] => 4
        )

    [3] => Array
        (
            [0] => 20130703
            [1] => 5
            [2] => 123
            [3] => 3894971
            [4] => 2
        )

    [4] => Array
        (
            [0] => 20130704
            [1] => 290
            [2] => 478
            [3] => 5119617
            [4] => 1
        )
    [5] => Array
        (
            [0] => END_DAY
            [1] => 15
        )

第二 :

    [0] => Array
        (
            [0] => BEGIN_DAY
            [1] => 16
        )
    [1] => Array
        (
            [0] => 20130704
            [1] => 290
            [2] => 478
            [3] => 5119617
            [4] => 1
        )

到目前为止我尝试过的:

$days=array();
$split_by='BEGIN_DAY';
foreach ($day_all as $key => $value) {
    if($day_all[$key][0]==$split_by){
         $days=array_slice($day_all, 0,$split_by);
  }
}
 var_dump($days);

非常感激!

$sk = "first";
foreach ($array as $key=>$value)
{
    if(in_array(BEGIN_DAY, $value)&&$key!=0)
    {
        $sk = "second";
    }
    $result[$sk][] = $value;
}
echo "<pre>";
print_r($result);
$first = $result['first'];
$second = $result['second'];

像这样的东西:

$yourArray = ...; //is your array as described above
$finalArray = [];
$tempArray = [];
for($idx = 0; idx<$yourArray .length; idx++){
  $tempArray = $yourArray[$idx]

  if($yourArray[$idx][0] == 'BEGIN_DAY'){
    $finalArray[] = $tempArray;
    $tempArray = [];
  }
}

最后一个数组将包含数组。 每次找到BEGIN_DAY ,数组都将插入到finalArray中,并创建一个新数组。 要改进代码,也要检查单元格是否存在,以避免索引异常。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM