разделить один массив на основе определенного значения внутреннего массива - PullRequest
0 голосов
/ 23 марта 2019
$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
                        )
               )


Я пытаюсь разбить массив на разные массивы на основе значений.Это мой массив.Мне нужно разбить один массив на несколько на основе внутреннего значения "CITY:", подсчитать все "CITY:" и разбить массив от первого "CITY" до СЛЕДУЮЩЕГО "CITY" И СЛЕДУЮЩЕГО ....

результат: Iхочу разделить массив на основе значения, как показано ниже

[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
                        )


Я не знаю, как разделить это

1 Ответ

1 голос
/ 23 марта 2019

это должно работать для вас:

<?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);
...