首頁 後端開發 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

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

PHP和Python:解釋了不同的範例 PHP和Python:解釋了不同的範例 Apr 18, 2025 am 12:26 AM

PHP主要是過程式編程,但也支持面向對象編程(OOP);Python支持多種範式,包括OOP、函數式和過程式編程。 PHP適合web開發,Python適用於多種應用,如數據分析和機器學習。

為什麼要使用PHP?解釋的優點和好處 為什麼要使用PHP?解釋的優點和好處 Apr 16, 2025 am 12:16 AM

PHP的核心優勢包括易於學習、強大的web開發支持、豐富的庫和框架、高性能和可擴展性、跨平台兼容性以及成本效益高。 1)易於學習和使用,適合初學者;2)與web服務器集成好,支持多種數據庫;3)擁有如Laravel等強大框架;4)通過優化可實現高性能;5)支持多種操作系統;6)開源,降低開發成本。

在PHP和Python之間進行選擇:指南 在PHP和Python之間進行選擇:指南 Apr 18, 2025 am 12:24 AM

PHP適合網頁開發和快速原型開發,Python適用於數據科學和機器學習。 1.PHP用於動態網頁開發,語法簡單,適合快速開發。 2.Python語法簡潔,適用於多領域,庫生態系統強大。

PHP和Python:深入了解他們的歷史 PHP和Python:深入了解他們的歷史 Apr 18, 2025 am 12:25 AM

PHP起源於1994年,由RasmusLerdorf開發,最初用於跟踪網站訪問者,逐漸演變為服務器端腳本語言,廣泛應用於網頁開發。 Python由GuidovanRossum於1980年代末開發,1991年首次發布,強調代碼可讀性和簡潔性,適用於科學計算、數據分析等領域。

PHP:服務器端腳本語言的簡介 PHP:服務器端腳本語言的簡介 Apr 16, 2025 am 12:18 AM

PHP是一種服務器端腳本語言,用於動態網頁開發和服務器端應用程序。 1.PHP是一種解釋型語言,無需編譯,適合快速開發。 2.PHP代碼嵌入HTML中,易於網頁開發。 3.PHP處理服務器端邏輯,生成HTML輸出,支持用戶交互和數據處理。 4.PHP可與數據庫交互,處理表單提交,執行服務器端任務。

PHP和網絡:探索其長期影響 PHP和網絡:探索其長期影響 Apr 16, 2025 am 12:17 AM

PHP在過去幾十年中塑造了網絡,並將繼續在Web開發中扮演重要角色。 1)PHP起源於1994年,因其易用性和與MySQL的無縫集成成為開發者首選。 2)其核心功能包括生成動態內容和與數據庫的集成,使得網站能夠實時更新和個性化展示。 3)PHP的廣泛應用和生態系統推動了其長期影響,但也面臨版本更新和安全性挑戰。 4)近年來的性能改進,如PHP7的發布,使其能與現代語言競爭。 5)未來,PHP需應對容器化、微服務等新挑戰,但其靈活性和活躍社區使其具備適應能力。

PHP與Python:用例和應用程序 PHP與Python:用例和應用程序 Apr 17, 2025 am 12:23 AM

PHP適用於Web開發和內容管理系統,Python適合數據科學、機器學習和自動化腳本。 1.PHP在構建快速、可擴展的網站和應用程序方面表現出色,常用於WordPress等CMS。 2.Python在數據科學和機器學習領域表現卓越,擁有豐富的庫如NumPy和TensorFlow。

PHP的影響:網絡開發及以後 PHP的影響:網絡開發及以後 Apr 18, 2025 am 12:10 AM

PHPhassignificantlyimpactedwebdevelopmentandextendsbeyondit.1)ItpowersmajorplatformslikeWordPressandexcelsindatabaseinteractions.2)PHP'sadaptabilityallowsittoscaleforlargeapplicationsusingframeworkslikeLaravel.3)Beyondweb,PHPisusedincommand-linescrip

See all articles