查找每个叶片模板中的作用域变量


Foreach scope variable in laravel blade template

好的,我得到了这个'main'刀片模板和laravel Collection对象$projects,并传递给视图

"main.blade.php"

...
<div id="projects-list">
    <?php $last_id = 0; ?>
    @include('partials._project')
</div>
<div>{{ $last_id }}</div>
...

和'partials._project.blade.php'模板如下

@foreach($projects as $project)
    <?php $last_id = $project->id ?>
    <a href="{{ action('ProjectController@index', $project->uri) }}">
        <h4>{{ $last_id }}</h4> 
        <img src="{{ $project->getProjectImage($project->poster) }}">
    </a>
@endforeach

问题是,在这一点<h4>{{ $last_id }}</h4>我得到项目ID的正确值(所以最后一块显示6的值)

但是在我的main.blade.php在<div>{{ $last_id }}</div>(循环结束后)我得到0(初始值)

我猜刀片@foreach循环对外部作用域的变量没有影响…还是我错了?

如果我理解正确,在你的循环,php创建局部变量$last_id,它不使用你的全局变量$last_id。在您的示例中,您运行循环,创建局部变量$last_id并将$project->id的值放入其中。全局变量$last_id没有更改。循环完成后,从全局作用域输出$last_id,它没有改变,所以它等于0,正如您定义的那样