簡體   English   中英

PHP - 將多維數組從 arrays 名稱生成字符串數組

[英]PHP - make multidimensional array to array of strings from the arrays names

我有一個像這樣的多維數組:

array (
   level1 => array ( level1.1,
                     level1.2)
   level2 => array ( level2.1,
                     level2.2 => array( level2.2.1 => 'foo',
                                        level2.2.2 => 'bar',
                                        level2.2.3 => 'test')
   )
)

結果我想要一個像這樣的字符串數組

array ("level1/level1.1",
       "level1/level1.2",
       "level2/level2.1",
       "level2/level2.2/level2.2.1",
       "level2/level2.2/level2.2.2",
       "level2/level2.2/level2.2.3")

這是我試過的代碼

function displayArrayRecursively($array, string $path) : array {

        if($path == "")
            $result_array = array();

        foreach ($array as $key => $value) {
            if (is_array($value)) {
                $this->displayArrayRecursively($value, $path . $key . '/');
            } else {
                $result_array[] = $path . $key;            }
        }

        return $result_array;
    }

知道我如何實現這一目標。 我可以使用引用數組來填充,但我想用返回值來解決它。

    $array = [
       'level1' => [
           'level1.1',
           'level1.2'
       ],
       'level2' => [
           'level2.1',
           'level2.2' => [
               'level2.2.1' => 'foo',
               'level2.2.2' => 'bar',
               'level2.2.3' => 'test'
           ]
       ]
   ];

    function arrayParser(array $array, ?string $path=null) {
       $res = [];
       foreach($array as $key => $value) {
           if(is_array($value)) {
               $res[] = arrayParser($value, ($path ? $path.'/' : $path).$key);
           }
           else {
               $res[] = $path.'/'.(!is_numeric($key) ? $key : $value);
           }
       }

       return flatten($res);
   }

    function flatten(array $array) {
        $return = array();
        array_walk_recursive($array, function($a) use (&$return) { $return[] = $a; });
        return $return;
    }

    $res = arrayParser($array); // result

在此處輸入圖像描述

暫無
暫無

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

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