[英]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.