根据键将数组拆分为子数组

时间:2020-01-24 06:34:19

标签: php arrays multidimensional-array

我有一个像下面这样的数组,我想根据键将数组拆分成多个单独的数组。如果我有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 个答案:

答案 0 :(得分:1)

您可以尝试以下代码

<?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 '</pre>';  
}

//Individual Prinitng array1
echo '<pre>'; print_r($array1); echo '</pre>';  

答案 1 :(得分:0)

尝试使用$$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
        )

)

希望这项工作对您有用。

答案 2 :(得分:0)

您应该阅读有关${} variable variables的信息,并针对您的情况:

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
        )

)

Demo