user11246426
user11246426

Reputation: 7

split a single array based on specific inner array value

$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

Answers (1)

Adrian Caragea
Adrian Caragea

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

Related Questions