搜尋
首頁後端開發php教程為什麼說php是弱型別學,跟其他語言的差別

為什麼說php是弱型別學,跟其他語言的差別

Jun 16, 2017 pm 01:43 PM
php為什麼好學類型語言

我想說:“Php的強大不言而喻”,這裡會應該有人說這個語言最強大,那個語言最好,小編聲明本專欄不比較哪個語言好與不好,本欄目只針對php語言的本性,以及跟我一樣在學習php的朋友一起分享我的經驗之談。小編不是php高手,小編只是php的忠實粉絲,投機的話可以跟小編一起聊聊php,一起分享大家的一些經驗。

昨天有人回覆我說何為弱類型,強調了三遍,我也沒解釋,今天就在這篇文章解釋一下何為弱類型,弱類型的好處以及弊端。小編之所以認為php很強大是因為php提供了許多獨特的特性工開發者使用,其中一個就是php弱型別機制。

先看一個例子,弱型別可以做以下這些操作:

例子1:

<?Php
$iruohong = 1; //整数型
$iruohong = array(); //数组型
$iruohong = “iruohong.com”; //字符串型
?>

有過一點程式設計經驗的朋友透過這段程式碼就有點弱類型的概念了,這就是php的弱型機制的其中一個表現,php核心的開發者是想透過這個不需要宣告的系統來提高開發者的開發效率。

然而這種機制會帶來一些麻煩,例如下面的一些比較會給你開發者帶來一些麻煩,如果開發者沒注意。

範例2:

<?Php
$a = null; $b = false;
If($a == $b){
echo “a和b相等!”;
}else{
echo “a和b不相等!”;
}
?>
<?Php
$a = &#39;&#39;; $b = 0; //同样为真
If($a == $b){
echo “a和b相等!”;
}else{
echo “a和b不相等!”;
}
?>

測試一下你會發現兩段程式碼都會輸出 a和b相等! ,新手朋友就會很詔異了怎麼會相等呢?小編也吃過這方面的虧,原因是在你比較的時候php不會嚴格檢驗傳入的變數類型,將變數自由的轉換類型。因為無論變數是0 null ‘’還是false,比較的時候php都預設為空,整數值的話都是0,所以就相等了。如果你非要比較出幾個值不一樣的話你就用“===”,三個等號代表完全相等,包括類型和值都相等。這是一些新手會犯的一些錯誤。

說了這麼多弱型別的東西,下面我們比較強型別和弱型別的差別。

(1)不管是強型別或弱型,變數都有兩個屬性:型別和值;也就是說,弱型別的變數同樣有型別。

不管是哪一種程式語言,其中使用的變量,都既有類型,又有值。強類型的變數類型,必須在原始程式碼中明確定義,稱之為“變數聲明”,弱類型的變數類型則是無需聲明的,由解釋器解釋。但是,這並不意味著,弱類型的變數就沒有類型這一概念了,舉例來說,PHP的gettype就是傳回該變數「目前」的類型。

(2)錯誤認識:【有人認為強類型的變數類型是不能改變的,弱型別變數是隨需改變的,強型別的變數一經聲明,就只能儲存這種類型的值,其他的值則必須透過轉換之後才能付給該變量,有編譯器自動理解的轉換,也有由程式設計師明確指定的強制轉換。弱型別的變數型別則是隨著需要不斷轉換。 】黑括號裡面的是錯誤認識,很多人都是這麼錯誤認識的,其實不管是前類型的變數類型還是弱類型的變數類型都是不能改變的。下面的例子就說明了一切,給$b賦值的時候$a的值是變化的,但是$a的類型是沒有變化的,下面例子請自行測試

例子3:

<?php
$a = 25;
echo $a.&#39;|&#39;.gettype($a).&#39;<br>&#39;;
$b = $a.&#39;good&#39;;
echo $b.&#39;|&#39;.gettype($b).&#39;<br>&#39;;
echo $a.&#39;|&#39;.gettype($a).&#39;<br>&#39;;
?>

輸出結果是:

25|integer25good|string25|integer

(3)強類型語言的強制轉換並沒有改變變數類型

強型別語言有個“強制轉換”,這改變的是變數的值的類型,以便進行賦值,而不會改變變數的類型。變數的型別是不允許改變的。

以上是為什麼說php是弱型別學,跟其他語言的差別的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
超越炒作:評估當今PHP的角色超越炒作:評估當今PHP的角色Apr 12, 2025 am 12:17 AM

PHP在現代編程中仍然是一個強大且廣泛使用的工具,尤其在web開發領域。 1)PHP易用且與數據庫集成無縫,是許多開發者的首選。 2)它支持動態內容生成和麵向對象編程,適合快速創建和維護網站。 3)PHP的性能可以通過緩存和優化數據庫查詢來提升,其廣泛的社區和豐富生態系統使其在當今技術棧中仍具重要地位。

PHP中的弱參考是什麼?什麼時候有用?PHP中的弱參考是什麼?什麼時候有用?Apr 12, 2025 am 12:13 AM

在PHP中,弱引用是通過WeakReference類實現的,不會阻止垃圾回收器回收對象。弱引用適用於緩存系統和事件監聽器等場景,需注意其不能保證對象存活,且垃圾回收可能延遲。

解釋PHP中的__ Invoke Magic方法。解釋PHP中的__ Invoke Magic方法。Apr 12, 2025 am 12:07 AM

\_\_invoke方法允許對象像函數一樣被調用。 1.定義\_\_invoke方法使對象可被調用。 2.使用$obj(...)語法時,PHP會執行\_\_invoke方法。 3.適用於日誌記錄和計算器等場景,提高代碼靈活性和可讀性。

解釋PHP 8.1中的纖維以進行並發。解釋PHP 8.1中的纖維以進行並發。Apr 12, 2025 am 12:05 AM

Fibers在PHP8.1中引入,提升了並發處理能力。 1)Fibers是一種輕量級的並發模型,類似於協程。 2)它們允許開發者手動控制任務的執行流,適合處理I/O密集型任務。 3)使用Fibers可以編寫更高效、響應性更強的代碼。

PHP社區:資源,支持和發展PHP社區:資源,支持和發展Apr 12, 2025 am 12:04 AM

PHP社區提供了豐富的資源和支持,幫助開發者成長。 1)資源包括官方文檔、教程、博客和開源項目如Laravel和Symfony。 2)支持可以通過StackOverflow、Reddit和Slack頻道獲得。 3)開發動態可以通過關注RFC了解。 4)融入社區可以通過積極參與、貢獻代碼和學習分享來實現。

PHP與Python:了解差異PHP與Python:了解差異Apr 11, 2025 am 12:15 AM

PHP和Python各有優勢,選擇應基於項目需求。 1.PHP適合web開發,語法簡單,執行效率高。 2.Python適用於數據科學和機器學習,語法簡潔,庫豐富。

php:死亡還是簡單地適應?php:死亡還是簡單地適應?Apr 11, 2025 am 12:13 AM

PHP不是在消亡,而是在不斷適應和進化。 1)PHP從1994年起經歷多次版本迭代,適應新技術趨勢。 2)目前廣泛應用於電子商務、內容管理系統等領域。 3)PHP8引入JIT編譯器等功能,提升性能和現代化。 4)使用OPcache和遵循PSR-12標準可優化性能和代碼質量。

PHP的未來:改編和創新PHP的未來:改編和創新Apr 11, 2025 am 12:01 AM

PHP的未來將通過適應新技術趨勢和引入創新特性來實現:1)適應云計算、容器化和微服務架構,支持Docker和Kubernetes;2)引入JIT編譯器和枚舉類型,提升性能和數據處理效率;3)持續優化性能和推廣最佳實踐。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
4 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SecLists

SecLists

SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版