2011-09-10 88 views

回答

4

一個是函數調用,另一個是內部類型轉換。沒有檢查過,我猜想後一個更快幾個週期,但不應該真的有所作爲。

+1

這也包含連接和插值的一些基準:http://leifw.wickland.net/2009/08/performance-of-converting-integer-to.html –

2

它們通常是可以互換的,因爲PHP使用自動類型轉換,而變量的類型由使用變量的上下文決定。

一些不同之處在於strval($ var)將返回$ var的字符串值,而(string)$ var在評估期間顯式轉換$ var的「類型」。

此外,從手冊中,對於strval()$ var「可以是任何標量類型或實現__toString方法的對象。不能對數組或實現__toString方法的對象使用strval()。 「

正如@Lars(字符串)所提到的,速度通常更快。

+1

「$ var實際上正在改變」類型「 $ var。「:這是錯誤的,因爲只要你不給變量賦值什麼都不會改變它。 「你不能在數組或者沒有實現__toString方法的對象上使用strval()。」那是對的,但是這也適用於'(string)'-cast。這裏沒有什麼不同。 – KingCrunch

+0

我站好了。我已經調整了我的答案,以便更準確。布爾類型頁面上的文檔使用短語「明確轉換」,所以我認爲$ var的類型正在改變,但需要調用settype()。 –

+0

你能提供一個你正在談論的手冊的鏈接嗎? – Pacerier