【问题标题】:PHP Category Tree to Array for Laravel Select BoxLaravel 选择框的 PHP 类别树到数组
【发布时间】:2015-08-12 01:45:27
【问题描述】:

我正在努力获取数组输出以填充 Laravel 中的选择框。基本上,使用 Laravel,您可以发送一个数组以通过刀片填充选择。

[
    '1'=>'Parent Category 1',
    '2'=>'Sub Category Name 1', 
    '3'=>'Parent Category 2',
    '4'=>'Sub Category Name'
 ]

我目前正在做一个快速模拟来填充一个 html 列表并正确输出,但经过数小时的研究,我只是迷失了如何转换它,因此它像上面的示例一样输出为数组。

所以我的代码看起来像这样:

public function categories($parent_id) {
    $q = $this->region->select(['title','id'])->where('parent_id','=',$parent_id)->orderBy('sort','asc')->get();
    echo '<ul>';
    foreach($q as $row)
    {
        echo '<li>';
        echo $row->title;
        echo '</li>';
        $this->categories($row->id);
    }
    echo '</ul>';
}

^ 这个输出

Parent Category 1 
  -Subcat  
  -Subcat

Parent Category 2 
  -Subcat  
  -Subcat

任何关于如何将其转换为单个数组的建议将不胜感激。

【问题讨论】:

  • 你想要一个普通的数组结构吗?
  • 一个普通数组只要保持orderBy就应该可以工作,我基本上只需要它像第一个例子一样输出。如果我可以像破折号一样缩进子猫 - 那很好。

标签: php mysql arrays laravel


【解决方案1】:

试试这个。我不能尝试所以代码可能有错误

public function categories_list($parent_id, $Indent)  {
   $q = $this->region->select(['title','id'])->where('parent_id','=',$parent_id)->orderBy('sort','asc')->get();
   $arr = array();
   foreach($q as $row) 
      {
            $arr[] =  $Indent . $row->title;
            $newIndent = $Indent == '' ? '  -- ' : '  '. $Indent;
            $arr = array_merge($arr, $this->categories($row->id, $newIndent));
        }
   return $arr;
}

$array = $this->categories_list($id, '');

【讨论】:

  • 谢谢。我得到未定义的变量:arr.
  • @limit 添加初始化
  • 谢谢,我解决了这个问题,但现在得到,array_merge():参数 #3 不是数组。
  • 太棒了。谢谢您的帮助!!这看起来是正确的,非常感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-30
  • 1970-01-01
  • 2013-06-14
  • 1970-01-01
相关资源
最近更新 更多