1

我的原始代码是:

$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++吗?

4

3 回答 3

2

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

但是这段代码真的很混乱,我不推荐它。如果你想$name在循环中初始化,你可以写:

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

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

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

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

我不赞同最后一个代码,它只是展示了逗号运算符和预增量的强大功能。

于 2013-07-02T06:51:01.117 回答
1

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

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

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

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

于 2013-07-02T06:50:15.567 回答
0

如果你试试这个,

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

你可以看到输出 = 1。

由于您需要$i with 10在代码中进行比较,php 将 i 动态转换为整数并分配 0。

记住那phpdynamically typed language

于 2013-07-02T06:55:07.063 回答