Laravel 4在提供计数变量时如何从foreach循环中添加数字?
Laravel 4在提供计数变量时如何从foreach循环中添加数字?
我将数组$cats传递给我的laravel模板视图。这是一个来自数据库事务的多维数组,包含类别数据。因此,它会包含像这样的数据:
$cat[0]['id'] = 1; $cat[0]['name'] = '第一个类别';
依此类推。在我的blade模板中,我有以下代码:
{{ $i=0 }} @foreach($cats as $cat) {{ $cat['name'] }} {{ $i++ }} @endforeach
它的输出是:
0 第一个类别 1 第二个类别 2 第三个类别
请注意类别名称前面的数字。它们是从哪里来的?这是某种聪明的Laravel技巧吗?似乎当你包含一个计数变量时,它们会被自动添加。我在任何地方都找不到相关的说明,而且我不想要它们!我该如何摆脱它们?
谢谢。
Laravel 4在使用foreach循环时,当给定count变量时,无法正确累加数字的问题。
问题的原因是在循环中使用了一个三元运算符来判断是否设置了$i变量,并根据判断结果进行累加或者赋值为0。然而,由于每次循环都会重新初始化$i变量,导致无法正确累加数字。
解决方法是将三元运算符的判断条件改为判断$i变量是否已经设置,而不是判断是否设置了$i变量并进行累加。这样,每次循环都会正确地累加数字。
修正后的代码如下:
($cats as $cat) {{ (isset($i)) ? ++$i : ($i = 0) }} - {{$cat['name']}}
通过将++操作符放在$i变量前面,可以在判断$i变量已经设置的情况下,先进行累加操作,再输出$i变量的值。这样就可以正确地累加数字,并输出正确的结果。
以上就是关于Laravel 4在使用foreach循环时,给定count变量无法正确累加数字的问题的原因和解决方法。通过对问题的分析和修正,我们可以避免类似的错误,并在使用Laravel 4时获得正确的结果。
问题的原因是在blade模板中使用了{{ }}
语法,这意味着要输出$i++
的值。如果不想输出这个值,应该使用php标签将其包裹起来。
解决方法是使用php标签将$i=0
和$i++
包裹起来。具体代码如下:
@foreach($cats as $cat) {{ $cat['name'] }} @endforeach
另外,如果选择使用数组也是可以的,但除非有特殊原因,建议使用对象语法。Laravel中的Eloquent集合对象可以像数组一样进行迭代,但是一旦熟悉了它的用法,会给你带来很多额外的好处。
如果想了解更多关于"eloquent collection objects"的内容,可以参考以下链接:
- [Laravel官方文档中关于Eloquent集合的说明](https://laravel.com/docs/eloquent#collections)
- [Dayle Rees的教程中关于Eloquent集合的内容](https://daylerees.com/codebright/eloquent-collections)
通过阅读Dayle Rees的教程,我意识到我的初始问题是不正确的,$cats实际上已经是一个集合对象而不是简单的数组,只是我没有意识到而已。谢谢你的帮助!