我的原始代码是:
$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++
的整数吗?
答案 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
。