2013-08-31 31 views
-1

如何通過for循環做到這一點?我想根據自己的陣列存在設置變量...如何通過循環做到這一點?

if (isset($sort[3])) $c = 3; 
if (isset($sort[4])) $d = 4; 
if (isset($sort[5])) $e = 5; 
if (isset($sort[6])) $f = 6; 
if (isset($sort[7])) $g = 7; 
if (isset($sort[8])) $h = 8; 
if (isset($sort[9])) $i = 9; 
if (isset($sort[10])) $j = 10; 
if (isset($sort[11])) $k = 11; 
if (isset($sort[12])) $l = 12; 
if (isset($sort[13])) $m = 13; 
if (isset($sort[14])) $n = 14; 
if (isset($sort[15])) $o = 15; 
+4

爲什麼你使用abcdefg等作爲變量名而不是數組? – Itay

+2

如果你需要這個,你是錯誤的。 – Havenard

回答

4

有趣的是,這其實是可以在PHP中完成,因爲PHP允許名稱中使用$"$<variable_name>"符號在運行時的變量。

for ($i = 3; $i <= 15; $i++) { 
    if (isset($sort[$i])) { 
     $varName = chr(ord ("a") + ($i - 1)); 
     $$varName = $i 
    } 
} 

說明:在PHP中,你可以use strings as variable names。要得到正確的字母表,首先使用ord來計算正確的ASCII值,將它移動$i - 1,然後通過使用chr將ASCII值轉換爲字符串來獲取所需的字符。

雖然你可以在PHP中這樣做,我不一定會推薦它。將字母表中的數組/圖映射到適當的值會更好。

+0

什麼動態變量名稱變成? –

+2

他們會通過$ o獲得$ c,並且您可以在您的代碼中使用它們,就像您將它們用於原始代碼一樣。再一次,這是真的**錯誤的編碼習慣,你會更好地使用從'c'到'o'的映射到適當的值(或類似的東西)。 –