Разбить массив на подмассив по ключам - PullRequest
0 голосов
/ 24 января 2020

У меня есть массив, как показано ниже, я хочу разделить массив на несколько отдельных массивов на основе ключа. Если у меня N ключей, я хочу N номеров отдельных массивов.

Array
(
[1] => Array
    (
        [0] => stdClass Object
            (
                [service_id] => 1
                [service_name] => te1

            )

        [1] => stdClass Object
            (
                [service_id] => 2
                [service_name] => te2

            )

    )

[2] => Array
    (
        [0] => stdClass Object
            (
                [service_id] => 8
                [service_name] => tr2

            )

        [1] => stdClass Object
            (
                [service_id] => 9
                [service_name] => tr3

            )

    )

Вывод должно быть как,

 $array1 = Array
    (
        [0] => stdClass Object
            (
                [service_id] => 1
                [service_name] => te1

            )

        [1] => stdClass Object
            (
                [service_id] => 2
                [service_name] => te2

            )

    )

 $array2=  Array
    (
        [0] => stdClass Object
            (
                [service_id] => 8
                [service_name] => tr2

            )

        [1] => stdClass Object
            (
                [service_id] => 9
                [service_name] => tr3

            )

    )

Ответы [ 3 ]

1 голос
/ 24 января 2020

Можете ли вы попробовать следующий код

<code><?php

$input = array(
    '1' => array(
        '0'=> array(
                'service_id' => 1,
                'service_name'=>'lorem'
                ),
        '1'=> array(
                'service_id' => 1,
                'service_name'=>'ipsum'
                ),
    ),
    '2' => array(
        '0'=> array(
                'service_id' => 1,
                'service_name'=>'lorem'
                ),
        '1'=> array(
                'service_id' => 1,
                'service_name'=>'ipsum'
                ),
    ),
);

foreach($input as $key => $val){    
    ${"array".$key}  = $val;// Create variables with name $array1,$array2...    

}

foreach($input as $key => $val){    
    // Will print in loop as array1 array2....
    echo '<pre>'; print_r(${"array".$key}); echo '
'; } // Индивидуальная печать array1 echo '
'; print_r($array1); echo '
';
0 голосов
/ 24 января 2020

Вы должны прочитать о ${} переменных переменных и для вашего случая:

foreach($data as $ind => $ar_obj){    
    ${"array".$ind}  = $ar_obj;  
}

Это создаст две переменные $array1 & $array2:

Array
(
    [0] => stdClass Object
        (
            [service_id] => 1
            [service_name] => lorem
        )

    [1] => stdClass Object
        (
            [service_id] => 2
            [service_name] => ipsum
        )

)
Array
(
    [0] => stdClass Object
        (
            [service_id] => 3
            [service_name] => lorem
        )

    [1] => stdClass Object
        (
            [service_id] => 4
            [service_name] => ipsum
        )

)

Демо

0 голосов
/ 24 января 2020

Попробуйте использовать переменную create, например $$test

Пример.

<?php 
$test = array(
    '1' => array(
        '0'=> array(
                'service_id' => 1,
                'service_name'=>'first'
                ),
        '1'=> array(
                'service_id' => 2,
                'service_name'=>'second'
                ),
    ),
    '2' => array(
        '0'=> array(
                'service_id' => 3,
                'service_name'=>'third'
                ),
        '1'=> array(
                'service_id' => 4,
                'service_name'=>'four'
                ),
    ),
);
$name = "array";
foreach($test as $key=> $value){
$final_name = $name.$key;
$$final_name = $value;
}
echo "array1:";
print_r($array1);

echo "array2:";
print_r($array2);

Выход

array1:Array
(
    [0] => Array
        (
            [service_id] => 1
            [service_name] => first
        )

    [1] => Array
        (
            [service_id] => 2
            [service_name] => second
        )

)
array2:Array
(
    [0] => Array
        (
            [service_id] => 3
            [service_name] => third
        )

    [1] => Array
        (
            [service_id] => 4
            [service_name] => four
        )

)

Надеюсь, эта работа для вас.

...