PHP丨PHP基礎知識之數據類型之間相互轉換

2020-12-05 一隻大臉貓博客

昨天剛講完PHP基礎知識數據類型,今天就來講講PHP數據類型的轉換。

轉換變量或者值的類型,轉換成其他數據類型的方法主要分為兩大類:自動轉換和強制轉換。

(int)、(integer):轉換成整形

(float)、(double)、(real):轉換成浮點型

(string):轉換成字符串

(bool)、(boolean):轉換成布爾類型

(array):轉換成數組

(object):轉換成對象

一、自動轉換類型:

自動類型轉換就是編譯器默默地、隱式地、偷偷地進行的數據類型轉換,這種轉換不需要程式設計師幹預,會自動發生。

自動轉換,通常發生在不同數據類型的變量進行混合運算時。一般只有四種標量類型int、float、string、bool才會進行自動轉換。

註:

字符串、數字參與運算,字符串先轉換成數字;

轉換後的數字從字符串開始的數值開始,不帶小數點則為int,否則為false;

字符串"abcsd"直接轉換成0;

整型轉化為浮點型,由於浮點型的精度範圍大於整型,所以轉化後的精度不會改變;

浮點型轉化為整型,將自動捨棄小數點部分,只保留整數部分;

如果一個浮點數超過整形數字的有效範圍,其結果是不確定的。;

當字符串轉化為數字時,轉化後的數字是從字符串開始部分的數值型字符串,數值型字符串包括用科學計算法表示的數字。

NULL轉為字符串,為空字符

二、強制類型轉換:

自動類型轉換是編譯器根據代碼的上下文環境自行判斷的結果,有時候並不是那麼「智能」,不能滿足所有的需求;

如果需要,程式設計師也可以自己在代碼中明確地提出要進行類型轉換,這稱為強制類型轉換。

PHP數據類型強制轉換有三種方式:

1、在轉換的變量前加上目標類型:包括(int)整型、(bool)布爾型、(float)浮點型、(string)字符串、(array)數組、(object)對象;

2、使用內置轉換函數intval()、floatval()、strval()、boolval()

以上兩種方法均沒有改變被轉換變量本身的類型,而是轉換得到新的類型數據值給變量,原始變量的類型和值不變。

3、setType() 會將變量本身類型改變成其他類型。

數據類型轉換的注意事項:

類型轉換中浮點型轉換成整型,會捨棄小數部分,只保留整數。

字符串轉換為數字時,轉換後的數字是從字符串開始部分的數值型字符部分轉換的。

自動類型轉換 VS 強制類型轉換

可以自動轉換的類型一定能夠強制轉換,但是,需要強制轉換的類型不一定能夠自動轉換;

現在我們學到的數據類型,既可以自動轉換,又可以強制轉換,以後我們還會學到一些只能強制轉換而不能自動轉換的類型。

可以自動進行的類型轉換一般風險較低,不會對程序帶來嚴重的後果;

只能強制進行的類型轉換一般風險較高,或者行為匪夷所思;

就是很奇怪的一種轉換,這會導致取得的值也很奇怪;

就是風險極高的一種轉換,一般會導致程序崩潰。

使用強制類型轉換時,程式設計師自己要意識到潛在的風險。

文章收集與網絡,辛苦收集轉載請備註出處一隻大臉貓博客!

好了今天就分享到這裡,拜拜我是你們的大朋友計算機愛好者大臉貓。

今日推薦:

PHP丨PHP基礎知識之數據類型

程式設計師日常小漫畫

PHP丨PHP基礎入門——函數「理論篇」

下期預告(變量類型測試函數的使用方法)

is_bool():判定是否為bool

is_int();判定是否為整型

is_float():判定是否為浮點型

is_string():判定是否為字符串

is_array();判定是否為數組

is_object():判定是否為對象

is_resource():判定是否為資源

is_null():判斷是否為空

is_scalar():判斷是否為標量

is_numeric():判斷是否為數字或數字字符串

is_callable():判斷是否為有效函數名

今日提問:【怎麼看待PHP不聲明數據類型?】

#php#

相關焦點

  • php學習之函數的封裝及二進位和十進位相互轉換案例
    案例:創建一個表單,輸入任意數字,讓其在二進位、十進位、十六進位之間互相轉換1.沒有封裝前的代碼實現封裝的意義在於一次寫成多次調用各進位和其他進位的相互轉換函數decbin():十進位轉二進位函數`dechex():十進位轉八進位
  • DVBBS php轉換工具使用教程
    工具推薦phpmyadmin,mysqlfront 二、轉換前的準備工作 1、首先要明確轉換的是論壇的類型 (如:AC 或 MSSQL 或 MYSQL)。2、下載資料庫文件,並通過訪問phpmyadmin軟體導入或把資料庫(ac版)放到相應的文件夾。
  • php基礎大通關——十分鐘了解php基礎知識點之二
    本節我們繼續通過練習題的方式來熟悉php的基礎知識點。1. echo 和 print 有什麼區別?php常用函數3. Joomla 在 PHP 中是什麼? 一套功能豐富的庫 開源 CMS 設計動態頁面的框架 可重用 PHP 組件的框架和分發系統解析:Joomla!
  • polarphp 0.0.1 alpha 發布:全新 PHP 運行時環境
    簡單來說polarphp之於PHP語言的關係跟NodeJS之於Javascript語言一樣,NodeJS在v8引擎基礎之上進行打造,為Javascript提供了一個在服務端運行的環境。同樣polarphp也在zend engine的基礎上進行打造,實現了一個除Web開發之外的一個全新的運行環境。
  • php基礎通關大挑戰,看看你能過幾關!
    繼續上一節的內容,通過試題的方式查缺補漏,看看你的php基礎知識還有哪些漏洞!1.在php中,以下代碼列印的結果是?<?php$RESULT =11+011+0x11;echo "$RESULT";?
  • PHP實例——PHP創建動態圖像
    只要安裝一些第三方的庫文件並具有一定的幾何知識,就可以利用PHP來創建和處理圖像了。  在下面的例子中,我們將創建一個PNG格式的圖像文件,下面的代碼是一個包含所創建的圖像的MIME類型的頭部:     <?
  • php 中關於時區的那點事
    現在有了統一的時間標準,不同地區的時間就可以統一換算成世界協調時再轉換成當地時間了,再也不會出現同一時刻不同時間了!在不需要精確到秒的情況下, GMT 和 UTC 基本一致,但 UTC 是以更加精確的原子時為基礎,因此常用於科學計算領域,也是目前時間計量的統一標準.
  • 怎麼理解php中的數組?php的數組創建和使用方法是什麼?
    php數組的定義數組就是值類型相同的變量的集合,在PHP中的一種常用的複合數據類型,數據可以存放很多的數據,可以存儲任何類型的數據。我們可以把變量當做一個包含值得盒子,那麼可以把數組當做當成一個帶有隔層的盒子,每一層都可以存放一個值。
  • php基礎打通關之一,你能通關嗎?
    本節將通過試題的方式來講解php的基礎問題,有興趣的來看看自己的php基礎如何!php基礎知識結構PHP 是下列哪個選項的簡稱?A. Preprocessed Hypertext PageB. Hypertext Markup LanguageC.
  • Php常見問題總結
    1:為什麼我得不到變量我在一網頁向另一網頁POST數據name,為什麼輸出$name時卻得不到任何值?php$Var="hello php";//修改為$Var="     hello php";試試得到什麼結果$post= "receive.php?Name=".$Var;header("location:$post");?
  • php常量是什麼?它和變量有什麼區別?
    php常量通常用來存儲一個不被改變也不希望變化的數據,該數據只能是四種標量數據類型的數據:整型(整數),浮點型(小數),字符串,布爾型(true/false)。2、php常量的命名規範php常量的命名規則和php變量的命名規則類似但不完全一樣。
  • php知識大通關——常見函數功能
    接上節內容,仍然以習題的方式講解php常見函數及功能!php常見函數1、在php中,下面哪個方法使用 PHP 連接 MySQL 資料庫?2、在php中,下面哪個函數用於在 PHP 中獲取環境變量? search() environment() env() getenv()解析:PHP 中提供了一個 getenv() 函數來訪問所有環境變量的值。3、下面哪個異常處理類方法在發生錯誤時檢索錯誤消息?
  • PHP 框架 QueryPHP 1.0.3 發布,兼容 PHP 8.0 和 PHP 8.1
    路由系統 (框架提供 MVC 自動路由並能夠智能解析 Restful 請求和基於 OpenApi 3.0 規範的 swagger-php 註解路由,文檔路由一步搞定。) PHP 7 嚴格模式 (每一個 PHP 腳本都是 strict_types=1,嚴格模式可以避免很多弱類型帶來潛在 BUG。) PHP 7 類型提示 (儘可能為每一個方法提供確定的參數類型和返回值類型,以及類屬性的類型支持。)
  • php htmlspecialchars()函數將特殊字符轉換為HTML實體
    htmlspecialchars()函數定義及用法在php中,htmlspecialchars()函數是使用來把一些預定義的字符轉換為HTML實體,返迴轉換後的新字符串,原字符串不變。如果 string 包含無效的編碼,則返回一個空的字符串,除非設置了 ENT_IGNORE 或者 ENT_SUBSTITUTE 標誌;被轉換的預定義的字符有:&:轉換為&amp;":轉換為&quot;':轉換為成為 '<:轉換為&lt;>:轉換為&gt;htmlspecialchars()函數有四個參數,第一個參數規定了需要轉換的字符串
  • 鳥哥:讓你的 PHP 7 更快之 Hugepage
    關於Hugepage是啥,簡單的說下就是默認的內存是以4KB分頁的,而虛擬地址和內存地址是需要轉換的, 而這個轉換是要查表的,CPU為了加速這個查表過程都會內建TLB(Translation Lookaside Buffer), 顯而易見如果虛擬頁越小,表裡的條目數也就越多,而TLB大小是有限的,條目數越多TLB的Cache Miss也就會越高, 所以如果我們能啟用大內存頁就能間接降低這個
  • php中函數禁用繞過的原理與利用
    bypass disable function是否遇到過費九牛二虎之力拿了webshell,卻連個scandir都執行不了拿了webshell確實是一件很歡樂的事情,但有時候卻僅僅只是一個小階段的結束;本文將會以webshell作為起點從頭到尾來歸納bypass disable function的各種姿勢。
  • 世界上最好的語言PHP:OpenCV與計算機視覺已在我掌控之下
    事實上,本篇文章正是有關這些時刻之一。在本篇文章中,除了那些我看電視節目和玩遊戲的時間,我敘述了在過去六個月的幾乎所有空閒時間裡所做的探索。DNN 模塊:https://github.com/opencv/opencv/wiki/ChangeLog#version341Jeremy Howard(免費的實踐課程「machine learning for coders」的創建者)認為現如今在學習機器學習和實際應用之間存在一個很大的界限。
  • 關於PHP 5.4 你所需要知道的
    Traits的最佳應用是多類之間可以共享相同的函數。打個比方,我們要做個網站,需要使用Facebook和Twitter的APIs。我們要建2個類,如果是以前,我們需要寫一個cURL的方法並且複製/粘貼到兩個類中。現在不用了,使用Traits重用代碼吧,這次真正地遵循了DRY(Don’t Repeat Yourself)原則。
  • windows 檢查php版本專題及常見問題 - CSDN
    2.安裝apcu.dll動態庫文件,打開php_apcu-5.1.8-7.0-nts-vc14-x86.zip壓縮包 拷貝裡面php_apcu.dll文件放到安裝目錄E:\Tools\phpstudy\PHPTutorial\php\php-7.0.12-nts\ext下面。 在php.ini文件中加載動態庫。
  • DVBBS ASP7.1 AC到PHP1.0升級教程
    2、下載轉換程序3、下載原程序4、把下載的原程序壓縮包解壓上傳到空間目錄,如我的:PHP目錄下。5、傳完安裝,運行:install/install.php。6、裝完後,打開你的地址,是否能打開。7、把轉換程序壓縮包解壓出來的三個文件,用記事本打開:DvAsp71Ac-DvPhp10.php/****************************** Dvbbs_Asp(AC版本)相關參數-START *****************************/$Ac_TablePre = "Dv_";  // AC 數據表前綴$Ac_User