PHP到Laravel循环转换

时间:2017-07-02 23:10:57

标签: php laravel blade

我正在尝试转换此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 无法使用[]进行阅读

2 个答案:

答案 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;它应该为您提供所需的一切。