例如:
for ($j=0, $n2=sizeof($quotes[$i]['methods']); $j<$n2; $j++) {
//
}
解决方法:
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循环标题部分中声明它们可能是为了观察(有些人说,这些变量肯定在这个循环中使用).它也更短.
注意:您也可以使用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是假的.它可能用作默认的预执行语句. 3)post_execution_section: 应该包含在执行循环体动作后执行的表达式.如果有多个单独的操作,则应使用逗号分隔. 在每次for循环迭代后执行.
for($i = 0; $i < 10; $i++, $i *= 2){
echo $i, PHP_EOL;
}
结果:
0
2
6
此外,每个for-loop部分可能是空的(什么都不做),并且保留了分号;分隔符:
for(;;){
// infinite loop
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。