PHP基礎(chǔ)之運(yùn)算符3——賦值運(yùn)算符
基本的賦值運(yùn)算符是“=”。一開始可能會(huì)以為它是“等于”,其實(shí)不是的。它實(shí)際上意味著把右邊表達(dá)式的值賦給左邊的運(yùn)算數(shù)。
賦值運(yùn)算表達(dá)式的值也就是所賦的值。也就是說,“$a = 3”的值是 3。這樣就可以做一些小技巧:
<?php$a?=?($b?=?4)?+?5;?//?$a?現(xiàn)在成了?9,而?$b?成了?4。?>
對(duì)于數(shù)組?array,對(duì)有名字的鍵賦值是用“=>”運(yùn)算符。此運(yùn)算符的優(yōu)先級(jí)和其它賦值運(yùn)算符相同。
在基本賦值運(yùn)算符之外,還有適合于所有二元算術(shù),數(shù)組集合和字符串運(yùn)算符的“組合運(yùn)算符”,這樣可以在一個(gè)表達(dá)式中使用它的值并把表達(dá)式的結(jié)果賦給它,例如:
<?php$a?=?3;$a?+=?5;?//?sets?$a?to?8,?as?if?we?had?said:?$a?=?$a?+?5;$b?=?'Hello?';$b?.=?'There!';?//?sets?$b?to?'Hello?There!',?just?like?$b?=?$b?.?'There!';?>
注意賦值運(yùn)算將原變量的值拷貝到新變量中(傳值賦值),所以改變其中一個(gè)并不影響另一個(gè)。這也適合于在密集循環(huán)中拷貝一些值例如大數(shù)組。
在 PHP 中普通的傳值賦值行為有個(gè)例外就是碰到對(duì)象?object?時(shí),在 PHP 5 中是以引用賦值的,除非明確使用了?clone?關(guān)鍵字來(lái)拷貝。
引用賦值PHP 支持引用賦值,使用“$var = &$othervar;”語(yǔ)法。引用賦值意味著兩個(gè)變量指向了同一個(gè)數(shù)據(jù),沒有拷貝任何東西。
Example #1 引用賦值
<?php$a?=?3;$b?=?&$a;?//?$b?是?$a?的引用print?'$an';?//?輸出?3print?'$bn';?//?輸出?3$a?=?4;?//?修改?$aprint?'$an';?//?輸出?4print?'$bn';?//?也輸出?4,因?yàn)?$b?是?$a?的引用,因此也被改變?>
自 PHP 5 起,new?運(yùn)算符自動(dòng)返回一個(gè)引用,因此再對(duì)?new?的結(jié)果進(jìn)行引用賦值在 PHP 5.3 以及以后版本中會(huì)發(fā)出一條?E_DEPRECATED?錯(cuò)誤信息,在之前版本會(huì)發(fā)出一條E_STRICT?錯(cuò)誤信息。
例如以下代碼將產(chǎn)生警告:
<?phpclass?C?{}/*?The?following?line?generates?the?following?error?message:*?Deprecated:?Assigning?the?return?value?of?new?by?reference?is?deprecated?in...*/$o?=?&new?C;?>
相關(guān)文章:
1. XML入門精解之結(jié)構(gòu)與語(yǔ)法2. html清除浮動(dòng)的6種方法示例3. CSS3實(shí)現(xiàn)動(dòng)態(tài)翻牌效果 仿百度貼吧3D翻牌一次動(dòng)畫特效4. 原生js XMLhttprequest請(qǐng)求onreadystatechange執(zhí)行兩次的解決5. 刪除docker里建立容器的操作方法6. msxml3.dll 錯(cuò)誤 800c0019 系統(tǒng)錯(cuò)誤:-2146697191解決方法7. asp在iis7報(bào)錯(cuò)行號(hào)不準(zhǔn)問題的解決方法8. asp批量添加修改刪除操作示例代碼9. 三個(gè)不常見的 HTML5 實(shí)用新特性簡(jiǎn)介10. ASP中解決“對(duì)象關(guān)閉時(shí),不允許操作。”的詭異問題……
