我正在尝试转换此PHP代码:
<?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 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
FatalErrorException 无法使用[]进行阅读
答案 0 :(得分:1)
你的错误就在这条线上。 $val
不存在,因为您将每个对象循环到$value
变量
$ar[] = <a href="all?authorID=' . $key . '"> . $val . </a>;
其次,刀片语法如下所示。有关详细用法,请参阅Docs。
@foreach ($v['authors'] as $key => $value)
<td><a href="{{ url('all?authorID=' . $key) }}">{{ $value }}</a></td>
@endforeach
注意:请将长代码保留在控制器中,而不是routes/web.php
答案 1 :(得分:0)
当你正在使用Larvel 5.4.x时,你可以简单地执行以下操作,而不必使用刀片重写它:
@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
虽然它不是最好的解决方案,但是,除非你可以将这个逻辑移到控制器中而不是在视图中,否则它可能是一个很好的临时解决方案。
如果您在Laravel文档中打开控制结构的以下链接:https://laravel.com/docs/5.4/blade#control-structures并向下滚动到标题为&#34; PHP&#34;它应该为您提供所需的一切。