2011-12-12 84 views
4

在我Yii框架項目,當我使用的Active Record從數據庫中其列的數據類型都數值讀取數據,我使用了var_dump字符串類型的值。我感到非常困惑。爲什麼int值從數據庫讀取後變成字符串?

+1

PHP是弱類型,所以字符串是一個數字爲好。只是不要太困惑得到一個字符串,這也是一個數字。 – hakre

+0

非常感謝你 – Shadow

回答

2

由於PHP是一種動態類型語言,在接口的數據類型常常有種令人費解。

通常,當從數據庫中檢索數據時,驅動程序不打擾將每個值轉換爲php中的類型,這類似於mysql中的數據類型(或者您也可以說,php不夠智能自動執行);你必須自己做轉換。幸運的是,這是很容易做到:

$yourvar = (int)$yourvar; 
+3

PHP不是「非類型化」,這將意味着它沒有類型。它是*動態輸入*。 – deceze

+0

@deceze:你說的當然沒錯,我會改正 – codeling

+0

非常感謝你 – Shadow

0

的Yii的CActiveRecord創建模型變量動態,當我們執行一個查詢,並在默認情況下它們是字符串類型。他們使用_get & _set魔法方法來動態創建,並且他們不設置它們的類型,因此它們是字符串類型。

由於PHP不是強類型語言,所以你不應該擔心這一點,你可以改變自己的類型。

+0

非常感謝你 – Shadow

相關問題