弱型別語言允許將一塊記憶體看做多種型別。例如直接將整數變數與字元變數相加。 C and C 是靜態語言,也是弱型別語言;Perl and PHP 是動態語言,但也是弱型別語言。
PHP 是一門弱型別語言
我們注意到,不必向PHP 宣告該變量的資料型態。
PHP 會根據變數的值,自動把變數轉換成正確的資料型別。 (推薦學習:PHP程式設計從入門到精通)
在強型別的程式語言中,我們必須在使用變數前先宣告(定義)變數的類型和名稱。
強、弱型別
強型別strongly typed: 如果一種語言的所有程式都是well behaved-即不可能出現forbidden behaviors,則該語言為strongly typed。
弱型別weakly typed: 否則為weakly typed。例如C語言的緩衝區溢出,屬於trapped errors,即屬於forbidden behaviors..故C是弱類型
前面的人也說了,弱類型語言,類型檢查更不嚴格,如偏向於容忍隱式類型轉換。譬如說C語言的int可以變成double。這樣的結果是:容易產生forbidden behaviours,所以是弱型別的
#動態、靜態型別
靜態型別statically: 如果在編譯時拒絕ill behaved程序,則是statically typed;
動態型別dynamiclly: 如果在運行時拒絕ill behaviors, 則是dynamiclly typed。
誤解
大家覺得C語言要寫int a, int b之類的,Python不用寫(可以直接寫a, b),所以C是靜態,Python是動態。這麼理解是不夠準確的。譬如Ocaml是靜態型別的,但是也可以不用明確地寫出來。 。
Ocaml是靜態隱式類型
靜態類型可以分為兩種:
如果類型是語言語法的一部分,在是explicitly typed明確型別;
如果類型透過編譯時推導,是implicity typed隱式類型, 例如ML和Haskell
以上是php是一種強型別語言嗎的詳細內容。更多資訊請關注PHP中文網其他相關文章!