婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > PHP中強(qiáng)制類型轉(zhuǎn)換的示例詳解

PHP中強(qiáng)制類型轉(zhuǎn)換的示例詳解

熱門標(biāo)簽:OMG地圖標(biāo)注app 地圖標(biāo)注視頻廣告入駐 ai電話機(jī)器人加盟代理 電銷機(jī)器人便宜的有嗎 400電話鄭州申請 中原區(qū)電話機(jī)器人價(jià)格 gps 地圖標(biāo)注軟件 黔江400電話如何辦理 招標(biāo)自動語音外呼系統(tǒng)

前言

學(xué)過靜態(tài)語言開發(fā)的朋友對類型轉(zhuǎn)換不會陌生,比如Java、C#、C++等。靜態(tài)語言的好處就是變量強(qiáng)制必須指定類型,這也是編譯的要求,所以大部分編譯型的語言都會有強(qiáng)制變量類型的要求。而PHP據(jù)說也會在PHP8中加入JIT實(shí)現(xiàn)編譯功能,并且在7.4中就會引入變量聲明時(shí)的類型指定。下面我們先看看目前PHP中的參數(shù)類型及返回值類型的使用。

1function add(int $a, float $b) : int{
2 return (int) $a + $b;
3}

上述代碼中,方法參數(shù)中定義了參數(shù)的類型,包括一個(gè)int類型的a和一個(gè)float類型的b。然后在方法后面定義了方法的返回值必須是int類型。我們知道,如果計(jì)算表達(dá)式中出現(xiàn)了float類型,那么計(jì)算結(jié)果會變成float類型。這個(gè)方法需要返回的是一個(gè)int類型。因此我們使用了一個(gè)強(qiáng)制類型轉(zhuǎn)換(int)。在定義了參數(shù)類型和返回值類型后,如果傳遞或者返回的類型不一致,就會報(bào)錯(cuò)。

參數(shù)類型和返回值類型最好在7以上的版本使用?;绢愋腿鏸nt、float等的參數(shù)類型聲明都是7以后才支持的,詳情參見文檔:

https://www.php.net/manual/zh/functions.arguments.php

我們通過(int)、(float)、(bool)等就可以實(shí)現(xiàn)PHP的類型強(qiáng)制轉(zhuǎn)換,和C基本上一樣。文檔中關(guān)于可以強(qiáng)制轉(zhuǎn)換的包括如下類型:

  • (int), (integer) - 轉(zhuǎn)換為整形 integer
  • (bool), (boolean) - 轉(zhuǎn)換為布爾類型 boolean
  • (float), (double), (real) - 轉(zhuǎn)換為浮點(diǎn)型 float
  • (string) - 轉(zhuǎn)換為字符串 string
  • (array) - 轉(zhuǎn)換為數(shù)組 array
  • (object) - 轉(zhuǎn)換為對象 object
  • (unset) - 轉(zhuǎn)換為 NULL (PHP 5)
  • (binary) 轉(zhuǎn)換和 b 前綴轉(zhuǎn)換支持為 PHP 5.2.1 新增

(int), (integer)

如果是布爾值,轉(zhuǎn)換結(jié)果為false變成0,true變成1

如果是float,向下取整,如7.99會轉(zhuǎn)換為7

如果是字符串,字符串從頭開始查找,開頭第一個(gè)是數(shù)字會直接變成該轉(zhuǎn)換結(jié)果,如果開頭沒有數(shù)字返回0

其他類型轉(zhuǎn)換在文檔中并沒有定義,文檔提示為“沒有定義從其它類型轉(zhuǎn)換為整型的行為。不要依賴任何現(xiàn)有的行為,因?yàn)樗鼤醇油ㄖ馗淖儭!?,但我們通過測試,可以發(fā)現(xiàn)對于其他類型的轉(zhuǎn)換是通過多次的類型轉(zhuǎn)換達(dá)成的,比如數(shù)組類型轉(zhuǎn)換為int類型,是根據(jù)數(shù)組是否包含內(nèi)容轉(zhuǎn)換為bool類型后再轉(zhuǎn)換為int類型

// (int)(integer)
 
var_dump((int) true); // 1
var_dump((int) false); // 0
 
var_dump((int) 7.99); // 7
 
var_dump((int) "35 ok"); // 35
var_dump((int) "ok 77"); // 0
var_dump((int) "ok yes"); // 0

var_dump((int) []); // 0
var_dump((int) [3,4,5]); // 1

(bool)(boolean)

當(dāng)轉(zhuǎn)換為 boolean 時(shí),以下值被認(rèn)為是 FALSE:

  • 布爾值 FALSE 本身
  • 整型值 0(零)
  • 浮點(diǎn)型值 0.0(零)
  • 空字符串,以及字符串 "0"
  • 不包括任何元素的數(shù)組
  • 特殊類型 NULL(包括尚未賦值的變量)
  • 從空標(biāo)記生成的 SimpleXML 對象

所有其它值都被認(rèn)為是 TRUE(包括任何資源 和 NAN)

這里需要注意的是,負(fù)數(shù)也會是TRUE,只有0是FASLE

// (bool)(boolean)

var_dump((bool) 0); // false
var_dump((bool) 1); // true
var_dump((bool) -1); // true

var_dump((bool) 0.0); // false
var_dump((bool) 1.1); // true
var_dump((bool) -1.1); // true

var_dump((bool) ""); // false
var_dump((bool) "0"); // false
var_dump((bool) "a"); // true

var_dump((bool) []); // false
var_dump((bool) ['a']); // true

$a;
var_dump((bool) $a); // false
var_dump((bool) NULL); // false

(string)

  • 布爾值,false轉(zhuǎn)換為空字符串"",true轉(zhuǎn)換為"1"
  • int或float類型,轉(zhuǎn)換為字符串形式的字面量,如1轉(zhuǎn)換為"1"
  • 數(shù)組和對象分別轉(zhuǎn)換為"Array"和"Object"字面量
  • 資源類型會被轉(zhuǎn)換為"Resource id #1"形式的字面量
  • NULL轉(zhuǎn)換為空字符串""

直接把 array,object 或 resource 轉(zhuǎn)換成 string 不會得到除了其類型之外的任何有用信息??梢允褂煤瘮?shù) print_r() 和 var_dump() 列出這些類型的內(nèi)容

注:測試結(jié)果,對象類型需要實(shí)現(xiàn)__tostring()魔術(shù)函數(shù),否則報(bào)錯(cuò)無法轉(zhuǎn)換為string類型

// (string)

var_dump((string) true); // "1"
var_dump((string) false); // ""

var_dump((string) 55); // "55"
var_dump((string) 12.22); // "12.22"

var_dump((string) ['a']); // "Array"
class S{
 function __tostring(){
 return "S";
 }
}
var_dump((string) new S()); // "S"

var_dump((string) NULL); // ""

(array)

對于任意 integer,float,string,boolean 和 resource 類型,如果將一個(gè)值轉(zhuǎn)換為數(shù)組,將得到一個(gè)僅有一個(gè)元素的數(shù)組,其下標(biāo)為 0,該元素即為此標(biāo)量的值。換句話說(array)scalarValue 與 array(scalarValue) 是完全一樣的

如果一個(gè) object 類型轉(zhuǎn)換為 array,則結(jié)果為一個(gè)數(shù)組,其單元為該對象的屬性。鍵名將為成員變量名,不過有幾點(diǎn)例外:整數(shù)屬性不可訪問;私有變量前會加上類名作前綴;保護(hù)變量前會加上一個(gè) '*' 做前綴。這些前綴的前后都各有一個(gè) NULL 字符

將 NULL 轉(zhuǎn)換為 array 會得到一個(gè)空的數(shù)組

// (array)

var_dump((array) 1);
var_dump((array) 2.2);

var_dump((array) "a");

var_dump((array) true);

class Arr
{
 public $a = 1;
 private $b = 2.2;
 protected $c = "f";
}
class ChildArr extends Arr
{
 public $a = 2;
 private $d = "g";
 private $e = 1;
}
var_dump((array) new Arr());
var_dump((array) new ChildArr());

var_dump((array) null);

(object)

如果將一個(gè)對象轉(zhuǎn)換成對象,它將不會有任何變化。如果其它任何類型的值被轉(zhuǎn)換成對象,將會創(chuàng)建一個(gè)內(nèi)置類 stdClass 的實(shí)例。如果該值為 NULL,則新的實(shí)例為空。array 轉(zhuǎn)換成 object 將使鍵名成為屬性名并具有相對應(yīng)的值

注意:使用 PHP 7.2.0 之前的版本,數(shù)字鍵只能通過迭代訪問

// (object)

var_dump((object) 1);
var_dump((object) 1.1);
var_dump((object) "string");
var_dump((object) true);
var_dump((object) NULL);

var_dump((object) [1, 2, 3]);
var_dump((object) ["a" => 1, "b" => 2, "c" => 3]);

(unset)

使用 (unset) $var 將一個(gè)變量轉(zhuǎn)換為 null 將不會刪除該變量或 unset 其值。僅是返回 NULL 值而已

// (unset)

var_dump((unset) 1);
var_dump((unset) 1.1);
var_dump((unset) "string");
var_dump((unset) true);
var_dump((unset) null);

var_dump((unset) [1, 2, 3]);
var_dump((unset) new \stdClass());

(binary)

將所有類型轉(zhuǎn)換為二進(jìn)制字符串。二進(jìn)制字符串是區(qū)別于傳統(tǒng)常用的普通php的Unicode字符串。二進(jìn)制字符串是字節(jié)字符串,沒有字符集。具體的區(qū)別就類似于數(shù)據(jù)庫中的binary和char類型及blob和text類型

在日常的開發(fā)中基本用不到,了解即可

// (binary)

var_dump((binary) 1);
var_dump((binary) 1.1);
var_dump((binary) "string");
var_dump((binary) true);
var_dump((binary) null);

var_dump((binary) [1, 2, 3]);
var_dump((binary) new S());

以上就是我們的強(qiáng)制類型轉(zhuǎn)換的所有類型,其中有一些類型的轉(zhuǎn)換中提到了資源類型(Resource),但是并沒有資源類型的強(qiáng)制轉(zhuǎn)換。因?yàn)橘Y源類型大多是一些句柄操作,如數(shù)據(jù)庫鏈接、文件讀寫等,將其它類型強(qiáng)制轉(zhuǎn)換為資源類型沒有意義。

本文內(nèi)容會經(jīng)常出現(xiàn)在面試題中,而且在實(shí)際開發(fā)中的很多邏輯判斷出現(xiàn)的BUG也常常是由于PHP的自動類型轉(zhuǎn)換所導(dǎo)致的,所以這篇文章好好收藏多拿出來看看絕對會讓你有意想不到的收獲哦?。?/p>

測試代碼:

https://github.com/zhangyue0503/dev-blog/blob/master/php/201910/source/php%E4%B8%AD%E7%9A%84%E5%BC%BA%E5%88%B6%E7%B1%BB%E5%9E%8B%E8%BD%AC%E6%8D%A2.php

參考文檔:

https://www.php.net/manual/zh/language.types.type-juggling.php#language.types.typecasting

總結(jié)

到此這篇關(guān)于PHP中強(qiáng)制類型轉(zhuǎn)換的文章就介紹到這了,更多相關(guān)PHP強(qiáng)制類型轉(zhuǎn)換內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • PHP 變量類型的強(qiáng)制轉(zhuǎn)換
  • 淺談PHP強(qiáng)制類型轉(zhuǎn)換,慎用!
  • php foreach 參數(shù)強(qiáng)制類型轉(zhuǎn)換的問題
  • 解析PHP強(qiáng)制轉(zhuǎn)換類型及遠(yuǎn)程管理插件的安全隱患
  • PHP數(shù)組Key強(qiáng)制類型轉(zhuǎn)換實(shí)現(xiàn)原理解析

標(biāo)簽:池州 北京 日照 那曲 濟(jì)源 孝感 哈密 阿里

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《PHP中強(qiáng)制類型轉(zhuǎn)換的示例詳解》,本文關(guān)鍵詞  PHP,中,強(qiáng)制,類型,轉(zhuǎn)換,的,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《PHP中強(qiáng)制類型轉(zhuǎn)換的示例詳解》相關(guān)的同類信息!
  • 本頁收集關(guān)于PHP中強(qiáng)制類型轉(zhuǎn)換的示例詳解的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    日本视频免费一区| 成人av在线资源| 国产精品一区2区| 欧美在线短视频| 国产三级精品在线| 五月天久久比比资源色| 成人综合在线观看| 日韩精品一区二区三区视频播放| 国产精品国产三级国产普通话蜜臀| 日韩和的一区二区| 色琪琪一区二区三区亚洲区| 国产欧美日韩不卡| 久久精品av麻豆的观看方式| 欧美日韩国产123区| 亚洲欧美另类在线| 成人免费av在线| 国产欧美精品日韩区二区麻豆天美| 蜜桃视频免费观看一区| 欧美综合久久久| 一色桃子久久精品亚洲| 成人免费视频播放| 国产女同性恋一区二区| 国产最新精品精品你懂的| 正在播放一区二区| 天堂在线一区二区| 欧美精品777| 青青草97国产精品免费观看| 7777精品伊人久久久大香线蕉的| 亚洲国产中文字幕| 欧美日韩国产在线观看| 一区二区三区高清| 欧美三级蜜桃2在线观看| 艳妇臀荡乳欲伦亚洲一区| 色噜噜夜夜夜综合网| 亚洲综合色区另类av| 色婷婷综合久久久久中文| 亚洲精品视频免费看| 色综合久久久网| 亚洲午夜激情av| 91精品国产91久久久久久一区二区 | 国产剧情在线观看一区二区| 7878成人国产在线观看| 美女任你摸久久| 精品99久久久久久| youjizz久久| 亚洲黄一区二区三区| 欧美三级电影在线看| 视频一区视频二区在线观看| 日韩精品中文字幕在线一区| 国内精品伊人久久久久影院对白| 日本一区二区视频在线观看| 成人av网址在线观看| 一二三四社区欧美黄| 日韩亚洲欧美在线| 国产成人精品亚洲日本在线桃色| 亚洲欧美日本在线| 91精品国产麻豆| 东方欧美亚洲色图在线| 亚洲柠檬福利资源导航| 欧美一区二区国产| 高清shemale亚洲人妖| 亚洲综合色视频| 久久久久久久久久看片| 日本乱码高清不卡字幕| 激情久久五月天| 亚洲靠逼com| 日韩精品专区在线影院重磅| caoporn国产一区二区| 香蕉乱码成人久久天堂爱免费| 精品国产不卡一区二区三区| 99视频一区二区| 久久精品国产色蜜蜜麻豆| 中文字幕中文乱码欧美一区二区| 91精品国产综合久久福利 | 欧美伊人久久久久久午夜久久久久| 奇米一区二区三区| 亚洲欧美日韩成人高清在线一区| 欧美草草影院在线视频| 91免费视频观看| 国产在线精品一区二区夜色| 一区二区三区电影在线播| 久久久久久毛片| 欧美一区二区黄色| 欧美性做爰猛烈叫床潮| 本田岬高潮一区二区三区| 国产综合久久久久久久久久久久| 午夜精品福利一区二区三区av| 中文子幕无线码一区tr| 精品日韩欧美一区二区| 欧美日本不卡视频| 91一区二区在线| 成人亚洲一区二区一| 国产一区视频在线看| 日本sm残虐另类| 亚洲国产精品久久艾草纯爱| 亚洲人成网站在线| 国产日韩欧美综合在线| 久久精品一二三| 日韩欧美高清dvd碟片| 91精品黄色片免费大全| 欧美无砖砖区免费| 色综合天天综合网国产成人综合天 | 日韩高清欧美激情| 午夜成人免费电影| 亚洲第一综合色| 亚洲自拍另类综合| 亚洲激情五月婷婷| 亚洲三级在线免费观看| 中文字幕在线不卡一区| 中文字幕一区av| 亚洲人成网站在线| 综合在线观看色| 亚洲欧美日韩一区二区三区在线观看| 国产人成一区二区三区影院| 精品国产3级a| 欧美国产在线观看| 欧美国产日韩一二三区| 中文字幕乱码亚洲精品一区| 久久精品欧美一区二区三区不卡| 国产视频不卡一区| 亚洲人成在线观看一区二区| 亚洲主播在线播放| 天天色天天操综合| 精品影院一区二区久久久| 精品无码三级在线观看视频| 国产成人综合精品三级| 91免费国产在线观看| 欧美日韩精品电影| 日韩欧美你懂的| 国产午夜精品在线观看| 日韩毛片一二三区| 午夜影视日本亚洲欧洲精品| 精品一区二区精品| 成人av资源网站| 欧美日本在线观看| 久久人人97超碰com| 亚洲视频 欧洲视频| 天堂久久久久va久久久久| 美女一区二区三区| 91在线无精精品入口| 69p69国产精品| 久久久电影一区二区三区| 亚洲精品美国一| 精品中文字幕一区二区| caoporn国产精品| 91精品国产综合久久久久久| 国产日本欧洲亚洲| 日韩精品久久久久久| av爱爱亚洲一区| 日韩欧美你懂的| 亚洲精品免费在线| 国产九色精品成人porny| 色综合色狠狠天天综合色| aaa国产一区| 日韩免费观看2025年上映的电影 | 国产清纯白嫩初高生在线观看91| 亚洲乱码一区二区三区在线观看| 蜜桃久久久久久久| 色噜噜偷拍精品综合在线| 久久只精品国产| 午夜电影网亚洲视频| 成人aa视频在线观看| 欧美一区二区福利在线| 亚洲另类中文字| 成人午夜av在线| 欧美一卡二卡三卡| 一区二区三区欧美在线观看| 成人免费av在线| 久久久91精品国产一区二区三区| 午夜精品福利视频网站| 色综合天天天天做夜夜夜夜做| 久久看人人爽人人| 天天操天天干天天综合网| 色哟哟一区二区| 国产日韩欧美精品综合| 久久精品国产**网站演员| 欧美乱妇15p| 香蕉久久一区二区不卡无毒影院 | 欧美精品xxxxbbbb| 一区二区三区视频在线看| eeuss影院一区二区三区| 精品1区2区在线观看| 日本少妇一区二区| 欧美一区二区免费视频| 婷婷开心激情综合| 欧美优质美女网站| 艳妇臀荡乳欲伦亚洲一区| 91在线云播放| 亚洲另类一区二区| 色88888久久久久久影院野外| 亚洲欧洲在线观看av| 91网上在线视频| 亚洲在线观看免费| 欧美熟乱第一页| 丝袜亚洲另类欧美综合| 日韩天堂在线观看| 国内精品伊人久久久久av一坑 | 国产在线视频一区二区三区| 日韩一区二区三区高清免费看看| 午夜电影网一区|