2013-07-02 14 views
1

我的原始代碼是:PHP中使用兩個相同的操作者

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

回答

2

這部作品的原因是因爲+其參數自動轉換爲數字,並且不以數字開頭的任何字符串轉換爲0

但這個代碼是讓人有些困惑,我不會推薦它。如果你想在環路初始化$name,你可以寫:

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

但我不明白爲什麼你認爲這是必要的。您的原始代碼是大多數PHP程序員寫它的方式。將字符串初始化放在for標題中沒有任何好處。

相反,如果你想獲得真正小巧,你可以寫:

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

我並不贊同這最後的代碼,它只是一個逗號運算符和預增的力量展示。

+1

對於建議的代碼+1。在這個問題上的問題好得多 – hek2mgl

+0

「但是這段代碼真的很混亂,我不會推薦它」; p –

+0

@ hek2mgl不,這個逗號是必須的。否則'++ $ i <10'將被移入增量字段而不是結束測試字段。 – Barmar

1

我可以使用多個等於運營商如$名稱= $ I = ''

是當你看到

這是可能的,所以我將其設置爲 '' 空字符串

php的寬鬆輸入系統會將整數運算中的空字符串轉換爲0

0

如果你試試這個,

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

,你可以看到輸出= 1

既然你需要在你的代碼比較$i with 10PHP動態轉換我整數和0分配。

記住phpdynamically typed language

相關問題