php使用两个相等的运算符

时间:2013-07-02 06:46:08

标签: php for-loop operators equals

我的原始代码是:

$name = '';

for($i = 0;$i < 10; $i++) {
    $name .= '1';
}

我编辑了以下代码

for($name = $i = '';$i < 10; $i++) {
    $name .= '1';
}

echo $name;

输出为1111111111

var_dump:string(10) "1111111111"

这是有效的代码吗?

我可以使用多个相等的运算符,例如$name = $i = ''吗?

以及为什么我将其设置为''空字符串

for{}函数可以成功循环1

$i不一定是$i++的整数吗?

3 个答案:

答案 0 :(得分:2)

这可行的原因是因为+自动将其参数转换为数字,并且任何不以数字开头的字符串都会转换为0。

但是这段代码确实令人困惑,我不推荐它。如果要在循环中初始化$name,可以写:

for ($name = '', $i = 0; $i < 10; $i++) {
    $name .= '1';
}

但我不明白为什么你认为这是必要的。您的原始代码是大多数PHP程序员编写它的方式。将字符串初始化放在for标题中没有任何好处。

相反,如果你想变得非常紧凑,你可以写:

for ($name = $i = ''; $name .= '1', ++$i < 10; );

我不支持最后一个代码,它只是演示了逗号运算符和预增量的功能。

答案 1 :(得分:1)

  

我可以使用多个相等的运算符,例如$ name = $ i =''

是的,这是可能的,如你所见

  

以及为什么我将其设置为''空字符串

php的松散类型系统会将整数运算中的空字符串转换为0

答案 2 :(得分:0)

如果你试试这个,

$i = '';
$i++;
echo $i;

你可以看到输出= 1.

由于您需要在代码中比较$i with 10 php会动态地将i 转换为整数并指定0。

请注意php dynamically typed language