這種行爲在PHP中是否正確?PHP類型轉換優先級
據我所知,減去被級聯以鑄造爲整數的第一個「1」和「-1」,而不是「2」爲字符串。
請解釋原因。
解決問題的最佳方法是什麼? 這一個?所有的
<?php echo '-' . (string)1 + 1 . ' crazy cats'; ?>
這種行爲在PHP中是否正確?PHP類型轉換優先級
據我所知,減去被級聯以鑄造爲整數的第一個「1」和「-1」,而不是「2」爲字符串。
請解釋原因。
解決問題的最佳方法是什麼? 這一個?所有的
<?php echo '-' . (string)1 + 1 . ' crazy cats'; ?>
如果你願意的話,這樣就避免了優先級:
printf('-%d crazy cats',1+1);
首先,它是正確的,如果它是不同的,也將是正確的,這是PHP開發人員如何定義的操作的優先級。
在這種情況下,沒有操作的優先級,你還是你讀它從左到右
'-' . 1 ==> '-1'
'-1' + 1 ==> 0
(對字符串的算術運算,會盡量給他們,然後再轉換爲數字做算術)。0 . ' crazy cats' ==> "0 crazy cats"
(對數字進行字符串操作,會將它們轉換爲字符串)。哎呀,你比我快:)順便說一句,運算符優先級可訪問:http:// php.net/manual/en/language.operators.precedence.php。 – 2012-07-19 01:55:34
您的言辭已關閉。 '-'
沒有被鑄造,但被連接。
PHP仍然會將(string) 1
和-1
視爲一個整數。
.
和+/-
在PHP中具有相同的優先級,所以字符串可以從左到右讀取。
以上是類似於說:
echo '-1' + '1 crazy cats';
當然沒有鑄造虧損,糾正了這個問題。 – Paker 2012-07-19 01:59:31
如果你想瘋-2貓,你可以設置優先處理與括號:
echo '-' . (1 + 1) . ' crazy cats';
echo
也遵循echo 'foo', 'bar'
的結構,它將這些項目分成不同的語句來回顯。在這種情況下,您不必擔心連接順序。
所以你可以做<?php echo '-', (1 + 1), ' crazy cats'; ?>
和你的貓不會在乎負面!
驚訝,這不是愚弄的人..所以+1 – Louis 2012-07-19 02:01:20