PQL 快速入门
PQL基础
数据流转
输出文件
PQL 中的语句
分支和循环
更优雅的数据操作
PQL 高级特性
系统函数
自定义函数
扩展操作
其他语言相关
附录
FOR 语句用来遍历集合对象,集合对象可以是数组、数据行或数据表。由于 PQL 本身的语言特点,在数据开发中循环用得非常少,好多工作都被 GET 语句代替了。不过在Voyager模板引擎中,由于要向页面上输出数据,会经常用到。
上例中会遍历从1
到10
,包含10
。注意END LOOP
后面必须有分号,表示 FOR 语句结束。上例仅是说明 FOR 语句的用法,实例开发中不建议用这种方式插入数据,用 GET 语句和 PUT 语句会提高性能。
FOR 语句遍历数组的其他示例(后面的示例都省略了LOOP
后面的部分)。
上例后面两句是从数据源中查询结果,语句两端必须加括号。后一句因为变量字段只有一个$score
,且第一列就是想要的结果,所以-> FIRST COLUMN
可以省略掉。下面看一下遍历数据表的例子,一般数据表都是从数据源查询得来:
在遍历数据表时,可以理解为将数据表的每一行进行析构赋值(见 SET 语句),把每行每个字段位置对应的值赋值给循环变量。
最后看一下遍历数据行的例子。
特别注意,遍历数据行可以理解为把数据行转成一个两列的表格,这两列分别是数据行的字段名和字段值。上例中第一句,得到两次遍历,每一次遍历$key
和$value
分别为name
和Tom
,第二次遍历$key
和$value
分别为age
和18
。
就像有 SET 语句也有 VAR 语句一样,FOR 语句除了FOR-IN
循环外,还有FOR-OF
循环。在遍历数组时,FOR-IN
循环和FOR-OF
循环结果一致,但在遍历数据行和数据表时有所不同。
FOR-OF 循环只能声明一个循环变量,这个变量在遍历数据行和数据表时,其数据类型是数据行。可以理解为循环变量没有经过析构赋值,将集合中的整个项赋给了循环变量(原理同 VAR 语句)。FOR-IN 遍历数据表时需要预先知道数据表中的列数,FOR-OF 循环在不知道数据表有多少列时或列非常多时非常有用。在循环体中,通过数据行类型点规则访问数据行某项的值,如$student.name
或$student.score
。也可以通过UNDEFINED
对是否包含某个字段进行判断,如IF $student.rate IS UNDEFINED THEN
。
循环变量的值根据很一次循环都可能不同,其作用域仅限制在循环内部,循环体外面是访问不到的。循环退出后,循环变量即消失。如果定义的循环变量的变量名跟循环体外面的变量名一样时,则会在循环体内部访问不到外面同名变量的值,所以不建议将循环变量命名成与循环体外变量相同的名字。
PQL提供了 EXIT 语句和 CONTINUE 语句用于中断和继续下一次循环,点击链接查看详细内容。
参考链接