php – 逗号在for循环的第一个参数中做了什么?
当
for loop的第一个参数中有逗号时,它是什么意思?
例如: 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} = ",PHP_EOL; $j += 2; } ?> 变量$i和$j将在for循环之后的任何地方都可访问,但是在for循环标题部分中声明它们可能是为了观察(有些人说,这些变量肯定在这个循环中使用).它也更短. 注意:您也可以使用for循环的每个标题部分. UPDv1:
for(initialization_section; condition_section; post_execution_section){ // actions } 每个部分可能包含表达式,但不能包含其他控制结构. 1)initialization_section: 应该包含在循环开始之前执行的表达式. 在任何for循环迭代之前执行. for($i = 0,$j = 1; $i < 10; $i++){ echo "{$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} = ",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} = ",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 } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |