可以說我有一個變量名爲$文件和for循環:for($i=1; $i <= 5; $i++) {}
如何在循環中更改php變量名?
有關的for循環中,$i
值將被追加到$file
變量名每次迭代打完了循環結束,我應該有五個變量:$file1
,$file2
,$file3
,$file4
和$file5
。
可以說我有一個變量名爲$文件和for循環:for($i=1; $i <= 5; $i++) {}
如何在循環中更改php變量名?
有關的for循環中,$i
值將被追加到$file
變量名每次迭代打完了循環結束,我應該有五個變量:$file1
,$file2
,$file3
,$file4
和$file5
。
+1,忘記了你可以使用大括號引用。 – 2011-06-04 05:18:00
@Yuri非常感謝你!即使在2014年,你的答案正在幫助人們! – sweaty 2014-03-19 12:35:31
對於我所做的事情的陣列將無濟於事,我正逐行創建一個文件,所以我有'$ line01 =「foo」'....'$ line55 =「bar」'這樣做這個變量變量方法爲了讓我覺得最合理,除非有更好的方法來創建每行代碼?所以。我如何在01-09上填充0填充?我想在for循環中有一個if語句,但是有更好的方法嗎? – 2015-02-09 15:22:39
請參閱PHP的手冊Variable Variables。
$var_name = '';
for ($i = 0; $i < 5; $i++)
{
$var_name = 'file' . $i;
// reference $$var_name now.
$$var_name = 'foo';
}
var_dump($file1);
var_dump($file2);
var_dump($file3);
var_dump($file4);
var_dump($file5);
有是一個辦法做到這一點:
for($i = 1; $i <= 5; $i++) {
${'file'.$i} = ...;
}
但它是一個壞主意做到這一點。爲什麼這是一個壞主意?因爲這是陣列的意思。做到這一點,而不是:
for($i = 1; $i <= 5; $i++) {
$file[$i] = ...;
}
(NB正是在0而不是1開始數組鍵通常的慣例,但你不必這麼做。)
+1正是我要說的。 – 2011-06-04 05:19:54
您可以使用數組以及。它沒有相同的確切影響,但它通常是我在這些情況下看到的。
for($i=1; $i <= 5; $i++) {
$file[$i] = $i;
}
就可以做你想做的,而是動態創建變量似乎解決這樣的問題,一個不尋常的方式(我可能是錯的)
我建議儲存在一個文件名陣列,這樣你可以很容易地在文件迭代以後,或增加一個額外的文件,並沒有改變任何硬編碼的變量名
參考PHP手冊中的Variable variables部分。您可以使用$$
來滿足您的需求:
<?php
$var_prefix = 'file';
for($i=1; $i <= 5; $i++) {
$var_name = $var_prefix . $i;
$$var_name = 'Foo Bar Blah Baz ' . $i;
}
var_dump($file1, $file2, $file3, $file4, $file5);
?>
您爲什麼要這麼做?使用(關聯)數組作爲可移植的名稱空間幾乎總是一個更好的解決方案。 – 2011-06-04 05:16:40