为啥嵌套循环在 laravel 中不起作用
Posted
技术标签:
【中文标题】为啥嵌套循环在 laravel 中不起作用【英文标题】:why nested loop not working in laravel为什么嵌套循环在 laravel 中不起作用 【发布时间】:2017-09-15 14:46:16 【问题描述】:这是我的观点,我不知道为什么我的嵌套循环不起作用,请帮助我
<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)
【问题讨论】:
因为sub
在$m
中不存在?
能否打印 $users 数组来检查数组是否有问题
欢迎来到 Stack Overflow!请使用tour,环顾四周,并通读help center,尤其是How do I ask a good question?。以上内容不足以对您有所帮助。
@manian 我没发现它有价值
var_dump $users 并提供您的问题的输出。
【参考方案1】:
根据您的 var_dump,$m->namesubcategory - 不是数组。 $m->namesubcategory、$nam->namesubling 也不行。 你不能对他们使用“foreach”。
【讨论】:
任何其他解决方案我如何为每个或任何其他方法使用嵌套 我已经编写了 html 代码,我在上面尝试实现的是我可以遵循的任何其他方法或技巧来实现这一目标 我的意思是这样写 HTML @foreach($users as $m) .... @endforeach 但没有任何刀片指令。 HTML 你想要实现的目标 jstree 中的类别和子类别如上一节所述【参考方案2】:你必须从你的收藏中制作另一个数组。 然后你就能得到你需要的任何东西。
$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]
然后你就可以像你想要的那样“foreach”这个数组了。
请注意,语法是 "$a = $b['xx'] ?? [];" - php7
【讨论】:
以上是关于为啥嵌套循环在 laravel 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章
为啥在 RegisterController 中创建函数在 laravel 中不起作用
为啥预构建 cors 策略配置在 Laravel 7 应用程序中不起作用?