为什么嵌套循环不能在laravel中工作

时间:2017-04-19 11:34:22

标签: php html laravel laravel-5.3

这是我的观点,我不知道为什么我的嵌套looop无法工作请帮助我

         <ul>
     @foreach($users as $m)
                <li> {{$m->namecategory}}

                   <ul> 
                   @foreach($m->namesubcategory as $nam)
                          <li>{{$nam->namesubcategory}}

                             <ul>
                               @foreach($nam->namesubling as $lan)
                                    <li>{{$lan->namesubling}}</li>

                              @endforeach
                             </ul>


                          </li>
                      @endforeach
                   </ul>

               </li>

     @endforeach  
         </ul>

像这样抛出错误

为foreach()提供的参数无效(查看

这里是使用dd($ users)

输出的
array:3 [▼
  0 => {#209 ▼
  +"idcategory": 1
  +"namecategory": "mobile and assces"
   +"created_at": null
  +"updated_at": null
  +"idsubcategory": 1
  +"namesubcategory": "mobile"
  +"idcategory_mastercategory": 1
  +"idsubling": 1
  +"namesubling": "iphone"
  +"idsubcategory_subcategory": 1
   }
  1 => {#211 ▼
  +"idcategory": 1
  +"namecategory": "mobile and assces"
  +"created_at": null
  +"updated_at": null
  +"idsubcategory": 2
  +"namesubcategory": "mobile cover"
  +"idcategory_mastercategory": 1
  +"idsubling": 2
  +"namesubling": "nexu cover"
  +"idsubcategory_subcategory": 2
   }
   2 => {#212 ▼
   +"idcategory": 2
  +"namecategory": "elect"
   +"created_at": null
  +"updated_at": null
  +"idsubcategory": 3
  +"namesubcategory": "lap"
  +"idcategory_mastercategory": 2
  +"idsubling": 3
  +"namesubling": "hp"
  +"idsubcategory_subcategory": 3
  }
 ]

我正在努力实现这个目标

      -mobile and accessory (mastercategory)
        1.mobile(subcategory)
                1.iphone(subling)
        2.mobile cover(subcategory)
               1.iphone cover(subling)

 -electronic(mastercategory)
           1.laptop(subcategory)
                1.hp(subling)

2 个答案:

答案 0 :(得分:1)

您必须从您的收藏中制作另一个数组。 然后你就能得到你需要的任何东西。

$result = [];
foreach ($users as $u) {
  $result[ $u-> namecategory ] = $result[ $u-> namecategory ] ?? [];
  $result[ $u-> namecategory ][$namesubcategory] = $result[ $u-> namecategory ][$namesubcategory] ?? [];
  $result[ $u-> namecategory ][$namesubcategory][] = $u-> namesubling;
}

结果你会有一个像

这样的数组
result [mobile and assces]
            [mobile]
              [iphone]
            [mobile cover]
              [nexu cover]

然后你就可以&#34; foreach&#34;这个数组就像你想要的那样。

请注意,那个syntaxis&#34; $ a = $ b [&#39; xx&#39;] ?? []; &#34; - PHP7

答案 1 :(得分:0)

根据您的var_dump, $ m-&gt; namesubcategory - 不是数组。 $ m-&gt; namesubcategory $ nam-&gt; namesubling 不太好。 你不能对他们使用“foreach”。