【问题标题】:Multi-level categories - single array to multidimensional array多级类别——单数组到多维数组
【发布时间】:2021-10-21 22:30:31
【问题描述】:

我正在努力解决以下问题:

我有一个具有这种模式的字符串:

Category 1 > SubCategory 2 > SubSubCategory 3 > SubSubSubCategory 4 ... etc.

我正在使用'>'的explode函数将字符串转换为数组。现在我的最终输出应该是这样的:

$categories[ 'Category 1' ][ 'SubCategory 2' ][ 'SubSubCategory 3' ][ 'SubSubSubCategory 4'][...etc...]

我认为我应该使用递归函数,但我根本无法理解它。该解决方案应满足无限数量的子类别。

有什么想法吗?

【问题讨论】:

    标签: php arrays recursion build


    【解决方案1】:

    嗯,我有一个可能不是最有效的解决方案,但它可以帮助您解决您需要的问题,而且您可能更容易理解。

    <?php
    $categories = "Category 1 > SubCategory 2 > SubSubCategory 3 > SubSubSubCategory 4";
    
    $splited = explode(">", $categories);
    
    $reversed = array_reverse($splited);
    
    $result = array();
    
    foreach($reversed as $category) {
        $result = [trim($category) => $result];
    }
    
    var_dump($result);
    

    基本上我和你做的一样,我使用explode() 来分隔每个类别。 在下一行中,我颠倒了这个数组,所以我可以将最后一级的类别添加到第一级。 在这个数组反转的 foreach 中,每个循环我都将前一个数组作为值添加,并将当前类别名称作为键传递给同一个变量。这使得每个创建的数组都与前一个相关联。

    这是我第一次在平台上帮助别人,所以很抱歉我的英语有点不对。

    【讨论】:

      【解决方案2】:

      首先,让我们做一个 explode 来去掉空格:

      $categories = explode(" > ", "Category 1 > SubCategory 2 > SubSubCategory 3 > SubSubSubCategory 4");
      

      现在,让我们构建嵌套的array

      $categories = explode(" > ", "Category 1 > SubCategory 2 > SubSubCategory 3 > SubSubSubCategory 4");
      $nested = "somevalue"; // The answer did not specify what the ultimate value should be.
      for ($index = count($categories); $index >= 0; $index--) {
          $nested = [$nested];
      }
      //$nested is the array that you wanted to build.
      

      由于上面的代码没有假设最高级别,您可以继续使用子类别。

      【讨论】:

        猜你喜欢
        • 2016-05-26
        • 2014-03-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-10-20
        • 1970-01-01
        相关资源
        最近更新 更多