我理解字符串中複雜(捲曲)語法的用法,但我不明白它是字符串之外的用途。字符串表示之外的複雜(捲曲)語法的用途
我剛剛發現在CakePHP的這個代碼,我無法理解:
// $class is a string containg a class name
${$class} =& new $class($settings);
如果有人能幫助我理解爲什麼在這裏使用,而這也正是這之間的區別:
$class =& new $class($settings);
謝謝。
我理解字符串中複雜(捲曲)語法的用法,但我不明白它是字符串之外的用途。字符串表示之外的複雜(捲曲)語法的用途
我剛剛發現在CakePHP的這個代碼,我無法理解:
// $class is a string containg a class name
${$class} =& new $class($settings);
如果有人能幫助我理解爲什麼在這裏使用,而這也正是這之間的區別:
$class =& new $class($settings);
謝謝。
最簡單方法是例如:
class FooBar { }
// This is an ordinary string.
$nameOfClass = "FooBar";
// Make a variable called (in this case) "FooBar", which is the
// value of the variable $nameOfClass.
${$nameOfClass} = new $nameOfClass();
if(isset($FooBar))
echo "A variable called FooBar exists and its class name is " . get_class($FooBar);
else
echo "No variable called FooBar exists.";
使用${$something}
或$$something
。在PHP中被稱爲「變量變量」。
因此,在這種情況下,會創建一個名爲$FooBar
的新變量,而變量$nameOfClass
仍然只是一個字符串。
我知道'變量',但我忘了你可以使用這種形式,我只用它們與$$。謝謝,現在已經很清楚了。 –
第一個示例創建一個動態命名的變量(名稱是類變量的值),另一個示例覆蓋類變量的值。明白這一點
一個在字符串之外使用複雜(捲曲)語法將是必要的示例是從表達式中構建一個變量名稱,其中包含多個變量。考慮下面的代碼:
$first_name="John";
$last_name="Doe";
$array=['first','last'];
foreach ($array as $element) {
echo ${$element.'_name'}.' ';
}
在回波語句上面的代碼將輸出變量$如first_name的第一循環期間的值,變量$姓氏的第二循環期間的值。如果要刪除大括號,echo語句會嘗試輸出第一個循環中變量$ first的值和第二個循環中變量$ last的值。但是由於這些變量沒有定義,代碼會返回一個錯誤。
它也可以是'$$ class'。檢查[關於這個特定案例的文檔](http://php.net/manual/en/language.variables.variable.php)。 – inhan
+1,是變量變量,我只是忘記了它們可以用作$ {}。謝謝 –