PHP到Laravel循环的转换
我正在尝试转换以下PHP代码:PHP到Laravel循环的转换,php,laravel,blade,Php,Laravel,Blade,我正在尝试转换以下PHP代码: <?php foreach ($arr as $v) { echo '<tr><td>' . $v['bookTitle'] . '</td><td>'; $ar = array(); foreach ($v['a
<?php
foreach ($arr as $v) {
echo '<tr><td>' . $v['bookTitle'] . '</td><td>';
$ar = array();
foreach ($v['authors'] as $key => $value) {
**$ar[] = '<a href="all?authorID=' . $key . '">' . $value . '</a>';**
}
echo implode(' , ', $ar) . '</td></tr>';
}
?>
进入Laravel代码,但有问题
@foreach ($arr as $v)
<tr><td> {{ $v['bookTitle'] }}</td><td>
<?php $ar = array(); ?>
@foreach ($v['authors'] as $key => $value)
***$ar[] = <a href="all?authorID=' . $key . '"> . $value . </a>;*** //{{ Html::link("all?authorID= $key", "$value")}}
@endforeach
{{implode(' , ', $ar)}}</td></tr>
@endforeach
@foreach($arr作为$v)
{{$v['bookTitle']}
@foreach($v['authors']作为$key=>$value)
***$ar[]=;***//{{Html::link(“all?authorID=$key”,“$value”)}
@endforeach
{{内爆(',',$ar)}
@endforeach
有人能帮我吗
@foreach ($arr as $v)
<tr><td> {{ $v['bookTitle'] }}</td><td>
@php $ar = array(); @endphp
@foreach ($v['authors'] as $key => $value)
@php $ar[]; @endphp = {{ Html::link("all?authorID= $key", "$value")}}
@endforeach
{{implode(' , ', $ar)}}</td></tr>
@endforeach
@foreach($arr作为$v)
{{$v['bookTitle']}
@php$ar=array()@endphp
@foreach($v['authors']作为$key=>$value)
@菲律宾比索$ar[]@endphp={{Html::link(“all?authorID=$key”,“$value”)}
@endforeach
{{内爆(',',$ar)}
@endforeach
致命错误
无法使用[]阅读您的错误在这一行。
$val
不存在,因为您正在将每个对象循环到$value
变量
$ar[] = <a href="all?authorID=' . $key . '"> . $val . </a>;
$ar[]=;
其次,blade语法如下所示。有关详细用法,请参阅
@foreach ($v['authors'] as $key => $value)
<td><a href="{{ url('all?authorID=' . $key) }}">{{ $value }}</a></td>
@endforeach
@foreach($v['authors']as$key=>$value)
@endforeach
注意:请将长代码保存在controller中,而不是
routes/web.php
因为您使用的是Larvel 5.4.x,您可以简单地执行以下操作,而不必使用blade重新编写:
@php
foreach ($arr as $v) {
echo '<tr><td>' . $v['bookTitle'] . '</td><td>';
$ar = array();
foreach ($v['authors'] as $key => $value) {
$ar[] = '<a href="all?authorID=' . $key . '">' . $value . '</a>';
}
echo implode(' , ', $ar) . '</td></tr>';
}
@endphp
@php
外汇($arr为$v){
回音“.$v['bookTitle']”;
$ar=array();
foreach($v['authors']作为$key=>$value){
$ar[]='';
}
回波内爆(',',$ar)。';
}
@endphp
虽然这不是最好的解决方案,但是,除非您可以将此逻辑移动到控制器中,而不在视图中,否则它可能是一个很好的临时解决方案
如果您在Laravel文档中打开以下控制结构链接:并向下滚动到名为“PHP”的标题,它将提供您所需的一切。能否发布完整代码,包括数组的值?还有,什么不起作用了?这实际上是一张书和作者的表格。只要点击作者的名字,你就可以找到所有与作者和合著者相关的书籍。我无法转换此$ar[]='';我想在@foreach循环中实现一个$variable,而不需要回显它,只要准备好它,这样我就可以在内爆后回显它()?如果您使用的是最新版本,那么您可以使用
@php[..]@endphp
,在重新考虑处理控制器中的作者之前,不要使用blade重写它。5.4.27您的意思是:(见上文)谢谢您,您对控制器中应该包含的长代码的看法是正确的,这将得到修复。但正如你在我上面的第一条评论中所看到的,我已经知道错误在哪一行了,我不知道的是如何将正在工作的php原始代码转换成laravel形式-我想在循环中实现一个数组键,这样我就可以填充空数组,然后对所有键进行模板化,这是$value,我也在上面对它进行了更正,我认为不需要使用数组来存储html并对其进行内爆。更好地使用刀片的设计方式,即使是纯PHP也做同样的事情,以回声变量或价值在HTMLAS的中间,我是回响作者,我不希望最后一个作者后面跟着一个“,”,也只是以前的那些。这也是我不在循环中使用简单html的原因。可能我必须使用Elount fil()方法,我正在检查:)谢谢,如果你这么说,那么我现在就不使用它(只添加htmlspecialchars())。我还想问你,为什么这是可能的,因为Larvel 5.4.x?