Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/249.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 逗号在for循环的第一个参数中起什么作用?_Php_For Loop - Fatal编程技术网

Php 逗号在for循环的第一个参数中起什么作用?

Php 逗号在for循环的第一个参数中起什么作用?,php,for-loop,Php,For Loop,当一个参数的第一个参数中有逗号时,它意味着什么 例如: for ($j=0, $n2=sizeof($quotes[$i]['methods']); $j<$n2; $j++) { // } for($j=0,$n2=sizeof($quotes[$i]['methods']);$j循环的第一部分中的逗号只是分隔变量声明 本质上,它只是声明了两个变量$j=0和$n2=sizeof($quotes[$i]['methods']),但是在循环构造函数中,而不是在循环构造函数之前。PH

当一个参数的第一个参数中有逗号时,它意味着什么

例如:

for ($j=0, $n2=sizeof($quotes[$i]['methods']); $j<$n2; $j++) {
    //
}

for($j=0,$n2=sizeof($quotes[$i]['methods']);$j循环的第一部分中的逗号只是分隔变量声明


本质上,它只是声明了两个变量
$j=0
$n2=sizeof($quotes[$i]['methods'])
,但是在循环构造函数中,而不是在循环构造函数之前。

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
header('Content-Type: text/plain');

$j = 10;

for($i = 0; $i < 10; $i++){
    echo "{$i} + {$j} = ", $i + $j, PHP_EOL;

    $j += 2;
}
?>
每个节可能包含表达式,但不能包含其他控制结构

1)初始化\u部分:

应该包含要在循环开始前执行的表达式。 如果有多个单独的表达式,则应使用逗号分隔它们

在任何
循环迭代之前执行

for($i = 0, $j = 1; $i < 10; $i++){
    echo "{$i} + {$j} = ", $i + $j, PHP_EOL;
}
2)条件部分:

应包含检查循环是否继续或停止的表达式。如果有多个单独的操作,则应使用逗号分隔

在每次
循环迭代之前执行

for($i = 1, $j = 0; $i++, $j < 10; $j++){
    echo "{$i} + {$j} = ", $i + $j, PHP_EOL;
}
for($i = 0; $i < 10; $i++, $i *= 2){
    echo $i, PHP_EOL;
}
for
循环的此部分中的逗号会导致忽略此部分之前的所有表达式,最后一个表达式除外(如所述)

不管
$i<1
在第二次迭代中为
false
。它可以用作默认的预执行语句

3)执行后部分:

应包含执行循环体操作后要执行的表达式。如果有多个单独的操作,则应使用逗号分隔

对于
-循环迭代,在每次
后执行

for($i = 1, $j = 0; $i++, $j < 10; $j++){
    echo "{$i} + {$j} = ", $i + $j, PHP_EOL;
}
for($i = 0; $i < 10; $i++, $i *= 2){
    echo $i, PHP_EOL;
}
另外,对于
,每个
循环部分可能都是空的(不做任何事情),保留分号
分隔符:

for(;;){
    // infinite loop
}

它声明了多个变量。在这种情况下,
$j
$n2
甚至可以在条件部分中使用,尽管在实际代码中很少会发现这种情况。@icktoofay
通常被
&
替换。是的,你是对的。
做了一件与
和&
完全不同的事情;它们不能互换
执行一些您很少希望执行的操作:它计算第一个操作数,丢弃结果,然后计算后一个操作数。当你只关心结果时,比如在一个条件下,它很少有用。它只有在用于其副作用时才有用,如在作业中。当没有副作用时,例如在用于条件的纯表达式中,
很少使用:我只看到它用于模糊处理。尽管如此,它仍然可以使用,并且不能与
&&
@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
for($i = 0; $i < 10; $i++, $i *= 2){
    echo $i, PHP_EOL;
}
0
2
6
for(;;){
    // infinite loop
}