我在 PHP 中有這個陣列:
$formats = array('100x100', '200x200', '300x300');
在 foreach 期間,我需要填充變數$html_100x100:
foreach($formats as $format) {
$html_100x100 = 'datas';
}
如何使變數$html_100x100動態化以每種格式創建一個變數(基于formats陣列)?
這是我嘗試過的:
foreach($formats as $format) {
${'html_{$format}'} = 'datas';
}
謝謝。
uj5u.com熱心網友回復:
每當您認為需要像這樣動態地命名變數時,您可能需要的是一個陣列。
$formats = array('100x100', '200x200', '300x300');
$html = [];
foreach($formats as $format) {
$html[$format] = 'datas';
}
uj5u.com熱心網友回復:
這不是變數變數,而是一個動態變數名。您可以將變數值附加到字串,如下所示:
$formats = array('100x100', '200x200', '300x300');
foreach($formats as $format) {
${'html_' . $format} = 'datas';
}
陣列解決方案是可取的,但這應該回答這個問題。沒有辦法找到所有$html_變數。在哪里 asprint_r和/或foreach可以在陣列上使用。
uj5u.com熱心網友回復:
宣告部分由字串定義的變數名被認為是一個壞主意。如果你升級它,這可能會產生大量不同的全域變數。
您想要在這里做的事情可以通過關聯陣列(使用字串鍵而不是索引的陣列)來完成。
你可以這樣做:
$htmlFormats = array();
foreach($formats as $format) {
$htmlFormats[$format] = 'datas';
}
之后,每個 $format 都將成為一個鍵,您可以使用它來訪問關聯陣列中的值,如下所示:
echo $htmlFormats['100x100'];
uj5u.com熱心網友回復:
使用花括號,您可以在運行時創建變數名稱“動態”。您的嘗試幾乎是正確的,但由于單引號確實有效,它不像雙引號那樣插入字串。
即使這是有效的,使用陣列來代替也是更好的做法。以這種方式創建變數可能會影響意外行為。
$formats = array('100x100', '200x200', '300x300');
foreach ($formats as $format) {
${"html_$format"} = $format;
}
var_dump($html_100x100);
輸出
string(7) "100x100"
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/515922.html
標籤:php变量
