Blade为常见的PHP控制结构提供了方便的语法。
每个控制结构@[structure]均以开头和结尾@[endstructure]。注意,在标记中,我们只是键入普通的HTML,并使用Blade语法包括变量。
@if ($i > 10) <p>{{ $i }} is large.</p> @elseif ($i == 10) <p>{{ $i }} is ten.</p> @else <p>{{ $i }} is small.</p> @endif
(“如果不是”的简短语法。)
@unless ($user->hasName()) <p>A user has no name.</p> @endunless
@while (true) <p>I'm looping forever.</p> @endwhile
@foreach ($users as $id => $name) <p>User {{ $name }} has ID {{ $id }}.</p> @endforeach
(与'foreach'循环相同,但添加了一个特殊@empty指令,该指令在迭代的数组表达式为空时执行,以显示默认内容。)
@forelse($posts as $post) <p>{{ $post }} is the post content.</p> @empty <p>There are no posts.</p> @endforelse
在循环内,$loop将提供一个特殊变量,其中包含有关循环状态的信息:
属性 | 描述 |
---|---|
$loop->index | 当前循环迭代的索引(从0开始)。 |
$loop->iteration | 当前循环迭代(从1开始)。 |
$loop->remaining | 其余的循环迭代。 |
$loop->count | 数组中要迭代的项目总数。 |
$loop->first | 这是否是循环的第一次迭代。 |
$loop->last | 这是否是循环中的最后一次迭代。 |
$loop->depth | 当前循环的嵌套级别。 |
$loop->parent | 在嵌套循环中,父级的循环变量。 |
例:
@foreach ($users as $user) @foreach ($user->posts as $post) @if ($loop->parent->first) This is first iteration of the parent loop. @endif @endforeach @endforeach
从Laravel 5.2.22开始,我们还可以使用指令@continue和@break
属性 | 描述 |
---|---|
@continue | 停止当前迭代并开始下一个迭代。 |
@break | 停止当前循环。 |
范例:
@foreach ($users as $user) @continue ($user->id == 2) <p>{{ $user->id }} {{ $user->name }}</p> @break ($user->id == 4) @endforeach
然后(假设5个以上的用户按ID排序并且没有ID缺失),页面将呈现
1 Dave 3 John 4 William
流程控制语句对于程序设计来说特别重要,它可以用于设定程序的逻辑结构。一般需要与条件判断语句结合使用。Lua 语言提供的控制结构有 if,while,repeat,for,并提供 break 关键字来满足更丰富的需求。本章主要介绍 Lua 语言的控制结构的使用。
Control structures 控制结构 The control structures of Go are related to those of C but differ in important ways. There is no do or while loop, only a slightly generalized for; switch is more flexible; if
控制结构 If If是分支 (branch) 的一种特殊形式,也可以使用else和else if。 与C语言不同的是,逻辑条件不需要用小括号括起来,但是条件后面必须跟一个代码块。 Rust中的if是一个表达式 (expression),可以赋给一个变量: let x = 5; let y = if x == 5 { 10 } else { 15 }; Rust是基于表达式的编程语言,有且仅有两种语
控制结构 函数式风格的程序倾向于需要更少的传统的控制结构,并且使用声明式风格写的程序读起来更好。这通常意味着打破你的逻辑,拆分到若干个小的方法或函数,用匹配表达式(match expression)把他们粘在一起。函数式程序也倾向于更多面向表达式(expression-oriented):条件分支是同一类型的值计算,for(..) yield 表达式,以及递归都是司空见惯的。 递归 用递归术语来表
条件分支 if if 修饰句 unless unless 修饰句 case 循环 while while 修饰句 until until修饰句 for break next redo retry 异常处理 raise begin rescue修饰句 其他 return BEGIN END (与C等语言不同的是)Ruby的控制结构是表达式,其中的一部分还会返回值(也有不返回值的,若把这些不返回值的表
不支持switch和goto,支持if,else,while,do,for,break,continue,return,?:。 条件判断中的括号不可省略,但在单行语句中的大括号可以省略。 需要注意的是,这里没有像C语言,和javascript里的非Boolean类型的自动转换,比如if(1){...}在Solidity中是无效的。