简体   繁体   English

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

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

What I've tried so far : I have an array as shown below, what i wanted to do is, create multiple arrays based on the value BEGIN_DAY : 到目前为止我尝试过的:我有一个如下所示的数组,我想要做的是,根据值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
        )

and so on ... I want to split this array into multiple different arrays when ever it begin with BEGIN_DAY so it should look like this: The first : 等等...我想把这个数组分成多个不同的数组,当它从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
        )

The second : 第二 :

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

What I've tried so far : 到目前为止我尝试过的:

$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);

Much Appreciated! 非常感激!

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

Something like this : 像这样的东西:

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

The final array will contain the arrays. 最后一个数组将包含数组。 Each time the BEGIN_DAY is found, the array will be inserted into the finalArray and a new one is created. 每次找到BEGIN_DAY ,数组都将插入到finalArray中,并创建一个新数组。 To improve the code, check the existence of the cell too, to avoid index exception. 要改进代码,也要检查单元格是否存在,以避免索引异常。

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

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