答案 0 :(得分:4)
循环第一部分中的逗号只是分隔变量声明。
本质上它只是声明两个变量$j=0
和$n2=sizeof($quotes[$i]['methods'])
,但是在循环构造函数中而不是在循环构造函数之前。
答案 1 :(得分:3)
PHP
继承了C++
- 就像语法一样。
C++
类似的语言通常具有代码块或控制结构的范围可见性,例如:
#include <iostream>
using namespace std;
int main() {
int a = 0; // main scope;
int b = 5; // main scope;
if(a != b){
int c = a + b; // if scope;
// a, b, c visible.
}
// a and b visible, but c - not visible.
for(int i = 10; i < 20; i++){
// for-loop scope:
// i, a and b visible
cout << "i: " << i << endl;
}
// a and b visible, but i - not visible.
return 0;
}
PHP没有这样的功能,但继承了语法规则(以及大多数C++
代码约定。)
<?php
header('Content-Type: text/plain');
for($i = 0, $j = 10; $i < 10; $i++, $j += 2){
echo "{$i} + {$j} = ", $i + $j, PHP_EOL;
}
?>
等同于
<?php
header('Content-Type: text/plain');
$j = 10;
for($i = 0; $i < 10; $i++){
echo "{$i} + {$j} = ", $i + $j, PHP_EOL;
$j += 2;
}
?>
变量$i
和$j
将在for
- 循环后的任何地方都可访问,但在for-loop
标题部分中声明这些变量可能是为了观察(有些人说,那个这些变量肯定在这个循环中使用)。它也更短。
注意:您可以对,
的每个标题部分使用for
- 循环播放。
的 UPDv1:强> 的
for
- 循环声明:
for(initialization_section; condition_section; post_execution_section){
// actions
}
每个部分可能包含表达式,但不能包含其他控制结构。
1)initialization_section:
应该包含在循环开始之前执行的表达式。
如果有多个单独的表达式,则应使用逗号,
分隔。
在for
- 循环迭代的任何之前执行。
for($i = 0, $j = 1; $i < 10; $i++){
echo "{$i} + {$j} = ", $i + $j, PHP_EOL;
}
结果:
0 + 1 = 1
1 + 1 = 2
2 + 1 = 3
3 + 1 = 4
4 + 1 = 5
5 + 1 = 6
6 + 1 = 7
7 + 1 = 8
8 + 1 = 9
9 + 1 = 10
2)condition_section:
应包含表达式以检查循环是继续还是停止。如果有多个单独的操作,则应使用逗号,
分隔。
在每次 for
- 循环迭代之前执行。
for($i = 1, $j = 0; $i++, $j < 10; $j++){
echo "{$i} + {$j} = ", $i + $j, PHP_EOL;
}
结果:
2 + 0 = 2
3 + 1 = 4
4 + 2 = 6
5 + 3 = 8
6 + 4 = 10
7 + 5 = 12
8 + 6 = 14
9 + 7 = 16
10 + 8 = 18
11 + 9 = 20
for
- 循环的这一部分中的逗号导致忽略本节以前的所有表达式,除了最后一个(提及@ icktoofay )。
for($i = 0, $j = 1; $i < 1, $j < 5; $i++, $j++){
echo "{$i} + {$j} = ", $i + $j, PHP_EOL;
}
结果:
0 + 1 = 1
1 + 2 = 3
2 + 3 = 5
3 + 4 = 7
无论$i < 1
是false
进行第二次迭代。它可以用作默认的预执行语句。
3)post_execution_section:
应该包含在执行循环体动作后执行的表达式。如果有多个单独的操作,则应使用逗号,
分隔。
在每次 for
- 循环迭代后执行。
for($i = 0; $i < 10; $i++, $i *= 2){
echo $i, PHP_EOL;
}
结果:
0
2
6
此外,每个for
- 循环部分可能为空(不执行任何操作),并保留分号;
分隔符:
for(;;){
// infinite loop
}