我有點與
$hello = "hello";
echo "Say $hello";
echo "Say {$hello}";
echo "Say ${hello}";
混淆和輸出是一樣Say hello
。我應該何時使用{$hello}
和${hello}
?以及爲什麼它不能用於單引號?
我有點與
$hello = "hello";
echo "Say $hello";
echo "Say {$hello}";
echo "Say ${hello}";
混淆和輸出是一樣Say hello
。我應該何時使用{$hello}
和${hello}
?以及爲什麼它不能用於單引號?
$animal = 'cat';
echo "I have 14 $animals";
這可能導致問題,從而你將 「逃離」 它
echo "I have 14 ${animal}s";
或
echo "I have 14 {$animal}s";
在單變量造成/表達均從未取代。
單引號字符串將永遠不會在PHP中擴展變量。請參閱:
http://php.net/manual/en/language.types.string.php
在PHP字符串格式的更多細節。總共有4個(包括在PHP 5.3中引入的nowdoc)。只有雙引號和heredoc字符串格式會導致變量被擴展。
據http://www.php.net/manual/en/language.types.string.php#language.types.string.parsing, 這是一個簡單的語法:
echo "Say ${hello}";
,這是一個捲曲的語法:
echo "Say {$hello}";
爲什麼他們兩個輸出一樣嗎? Becaus在PHP中可以在每個你想要的地方使用變量變量。例如:
$var = 'somevar';
$bar = 'var';
echo $$bar; // "somevar", simple variable variable
echo ${$bar}; // "somevar", complex syntax
echo ${bar}; // "var", because {bar} treated as a string constant:
// Notice: Use of undefined constant bar - assumed 'bar'
因此,使用可變變量語法${hello}
簡單地翻譯成$hello
。
有人走了,[寫了一本關於此的手冊](http://www.php.net/manual/en/language.types.string.php#language.types.string.parsing.complex)。你讀過它嗎? – 2012-02-29 08:46:31
謝謝@LinusKleen。現在我知道它是「捲曲」的 – 2012-02-29 08:51:33