Reputation: 7
$data =
[1] => Array
(
[1] => CITY :
[3] => CANADA
)
[8] => Array
(
[1] => Customer :
[4] => CUS1
)
[9] => Array
(
[1] => Customer :
[4] => CUS2
)
[10] => Array
(
[1] => Customer :
[4] => CUS3
)
.............
[17] => Array
(
[1] => CITY :
[3] => FLORIDA
)
[18] => Array
(
[1] => Customer :
[3] => C2
)
)
I am trying to split an array to different arrays based on values. This is my array. I need split a single array into multiple based on inner value "CITY :" count all "CITY :" and split array from first "CITY" to NEXT "CITY" AND NEXT....
result: I want to split the array based on value like below
[1] => Array
(
[1] => CITY :
[3] => CANADA
)
[8] => Array
(
[1] => Customer :
[4] => CUS1
)
[9] => Array
(
[1] => Customer :
[4] => CUS2
)
[10] => Array
(
[1] => Customer :
[4] => CUS3
)
)
[2] => Array
(
[1] => CITY :
[3] => FLORIDA
)
[18] => Array
(
[1] => Customer :
[3] => C2
)
i have no idea how to split this
Upvotes: 0
Views: 108
Reputation: 119
this should work for you:
<?php
$data = array(
array(
'CITY :',
'CANADA'
),
array(
'Customer :',
'CUS1'
),
array(
'Customer :',
'CUS2'
),
array(
'Customer :',
'CUS3'
),
array(
'CITY :',
'FLORIDA'
),
array(
'Customer :',
'C2'
),
);
$result = array();
$firstRun = true;
foreach($data as $item) {
if(array_values($item)[0] == 'CITY :') {
if(!$firstRun) {
$result[] = $splittedArray;
} else {
$firstRun = false;
}
$splittedArray = array();
}
$splittedArray[] = $item;
}
// add last array, as it will not pass at the finish through the first logic of the loop
$result[] = $splittedArray;
print_r($result);
Upvotes: 1