简体   繁体   English

如何根据 php 中的数组值将数组分成几部分?

[英]How to separate the array into parts based on a array value in php?

I have a multidimensional array and I wanted to break this array into smaller arrays based on a value in the array.我有一个多维数组,我想根据数组中的值将此数组分解为更小的 arrays。 The multidimensional is shown below:多维如下图所示:

Array
(
[0] => Array
    (
        [0] => SUBMISSION
        [1] => 22
        [2] => 18
        [3] => 34
    )

[1] => Array
    (
        [0] => TRANSACTN
        [1] => 15
        [2] => 13
    )

[2] => Array
    (
        [0] => TRANSPRICING
        [1] => 15
        [2] => 13
    )

[3] => Array
    (
        [0] => TRANSPRICING
        [1] => 15
        [2] => 13
    )

[4] => Array
    (
        [0] => TRANSPRICING
        [1] => 15
        [2] => 13
    )

[5] => Array
    (
        [0] => TRANSACTN
        [1] => 15
        [2] => 13
    )

[6] => Array
    (
        [0] => TRANSPRICING
        [1] => 15
        [2] => 13
    )

[7] => Array
    (
        [0] => TRANSPRICING
        [1] => 15
        [2] => 13
    )

[8] => Array
    (
        [0] => TRANSPRICING
        [1] => 15
        [2] => 13
    )

[9] => Array
    (
        [0] => SUBMISSION
        [1] => 5
        [2] => 2
        [3] => 3
    )

[10] => Array
    (
        [0] => TRANSACTN
        [1] => 17
        [2] => 15
    )

[11] => Array
    (
        [0] => TRANSPRICING
        [1] => 15
        [2] => 13
    )

[12] => Array
    (
        [0] => TRANSPRICING
        [1] => 15
        [2] => 13
    )

[13] => Array
    (
        [0] => TRANSPRICING
        [1] => 15
        [2] => 13
    )

) )

I wanted to break the above array into smaller arrays.我想把上面的数组分解成更小的 arrays。 I want to save the values starting from one SUBMISSION to the record before the next submission shown above value into an array.我想将从一个 SUBMISSION 开始的值保存到记录中,然后再将上面显示的下一次提交值保存到数组中。 Likewise I want to store all the rest of the submission till the next one appears.同样,我想存储提交的所有 rest 直到下一个出现。

The result should be like below:结果应如下所示:

[0] =>Array
(
   [0] => Array
    (
        [0] => SUBMISSION
        [1] => 22
        [2] => 18
        [3] => 34
    )

[1] => Array
    (
        [0] => TRANSACTN
        [1] => 15
        [2] => 13
    )

[2] => Array
    (
        [0] => TRANSPRICING
        [1] => 15
        [2] => 13
    )

[3] => Array
    (
        [0] => TRANSPRICING
        [1] => 15
        [2] => 13
    )

[4] => Array
    (
        [0] => TRANSPRICING
        [1] => 15
        [2] => 13
    )

[5] => Array
    (
        [0] => TRANSACTN
        [1] => 15
        [2] => 13
    )

[6] => Array
    (
        [0] => TRANSPRICING
        [1] => 15
        [2] => 13
    )

[7] => Array
    (
        [0] => TRANSPRICING
        [1] => 15
        [2] => 13
    )

[8] => Array
    (
        [0] => TRANSPRICING
        [1] => 15
        [2] => 13
    )
)
[1] =>Array
(
[0] => Array
    (
        [0] => SUBMISSION
        [1] => 5
        [2] => 2
        [3] => 3
    )

[1] => Array
    (
        [0] => TRANSACTN
        [1] => 17
        [2] => 15
    )

[2] => Array
    (
        [0] => TRANSPRICING
        [1] => 15
        [2] => 13
    )

[3] => Array
    (
        [0] => TRANSPRICING
        [1] => 15
        [2] => 13
    )

[4] => Array
    (
        [0] => TRANSPRICING
        [1] => 15
        [2] => 13
    )

)

I have written a code for this shown below:我为此编写了如下所示的代码:

<?php
$cars = array (
array("SUBMISSION",22,18,34),
array("TRANSACTN",15,13),
array("TRANSPRICING",15,13),
array("TRANSPRICING",15,13),
array("TRANSPRICING",15,13),
array("TRANSACTN",15,13),
array("TRANSPRICING",15,13),
array("TRANSPRICING",15,13),
array("TRANSPRICING",15,13),
array("SUBMISSION",5,2,3),
array("TRANSACTN",17,15),
array("TRANSPRICING",15,13),
array("TRANSPRICING",15,13),
array("TRANSPRICING",15,13)

);

 print_r($cars);

 $count_submission=0;

 for($i=0;$i<count($cars);$i++){

if($cars[$i][0] == 'SUBMISSION'){

    $count_submission++;
}
}
?>

I tried exploding using the first SUBMISSION but its not working.Cn anyone help me out in this ?

you can iterate over array using foreach like:您可以使用foreach遍历数组,例如:

$buf = array();
$exploded_cars = array();
$next = 0;
foreach ($cars as $car) {
    if ($car[0] == "SUBMISSION") {
        $next += 1;
        if ($next == 2) {
            array_push($exploded_cars, $buf);
            $buf = array($car);
            $next = 1;
        } else {
            array_push($buf, $car);
        }
    } else {
        array_push($buf, $car);
    }
}
array_push($exploded_cars, $buf);
unset($buf);
unset($next);
print_r($exploded_cars);

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

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