簡體   English   中英

如何將多維數組值推入單個數組

[英]How to push multidimensional array values in to single array

在這里我有一個多維數組,使用這個數組我必須合並單個數組,我已經嘗試在我的觀點我必須使用三個foreach循環然后我必須推動一個數組,但我擔心的是,如果我使用foreach循環意味着我的性能會降低,任何一個更新我的代碼都沒有為每個循環或簡化的代碼

My Array



 Array
(
    "100" => Array
        (
            "class 1" => Array
                (
                    "0" => "ABC"
                    "1" => "CDE"
                )

            "class 2" => Array
                (
                    "0" => "F"
                )
        )

    "200" => Array
        (
            "class 3" => Array
                (
                    "0" => "G"
                )
        )

      )

預期產出

 Array
(
 "0" => "100"
 "1" => "ABC"
 "2" => "CDE"
 "3" => "F"
 "4" => "200"
 "5" => "G"
)

我曾嘗試過以下

    <?php
$array = Array
(
    "100" => Array
        (
            "class 1" => Array
                (
                    "0" => "ABC",
                    "1" => "CDE"
                ),

            "class 2" => Array
                (
                    "0" => "F"
                )
        ),

    "200" => Array
        (
            "class 3" => Array
                (
                    "0" => "G"
                )
        )

      );
foreach($array as $firstKey => $firstVal){
    $mainArray[] = $firstKey;
    foreach($firstVal as $secondKey => $secondVal){
        foreach($secondVal as $thiredKey => $thiredVal){
             $mainArray[] = $thiredVal;
        }
    }

}
echo "<pre>";
print_r($mainArray);

?>

使用foreach()

$final_array = array();

foreach($array as $key=>$arr){ // apply foreach on initial array

    $final_array[] = $key; // assign key first

    foreach($arr as $ar){ // now child is also array so iterate over it

        $values = array_values($ar); // get all values of child array

        foreach($values as $val){ // iterate over child array values

            $final_array[] = $val; //assign them one-by-one

        }

    }

}

print_r($final_array);// print final array

輸出: - https://eval.in/1058692

沒有foreach()

$result = array();
array_walk($original_array, function($item,$key) use (&$result){
   $result[] = $key;
   array_walk_recursive($item, function($v) use (&$result){ 
     $result[] = $v; 
   });
});
print_r($result );

輸出: - https://3v4l.org/ECgdu

您可以像這樣展平多維數組

$result = array();
array_walk_recursive($original_array, function($v) use (&$result){ 
   $result[] = $v; 
});

如您所見,您的數組將被處理為閉包/匿名函數,並將其作為最終結果展平。

您可以通過使用array_walk()array_walk_recursive()而不使用foreach()for()循環來實現此目的。

這是代碼;

// Your input array
$input = array (
    100 => array(
        "class 1" => array("ABC", "CDE"),
        "class 2" => array("F")
    ),
    200 => array(
        "class 3" => array("G")
    )
);

$result = array();
array_walk($input, function($val, $key) use (&$result){
    $result[] = $key;
    array_walk_recursive($val, function($v, $k) use (&$result){
        $result[] = $v;
    });
});
// Your result
echo "<pre>";
print_r($result);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM