国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > PHP > 正文

PHP常見易錯題

2019-11-08 01:33:56
字體:
來源:轉載
供稿:網友
1、易錯題1function timesTwo(&$int) {        $int = $int * 2;    }    $int = 2;    $result = timesTwo($int);    echo $result;//為空值,因為引用參數只改變變量的值,并不返回結果2、易錯題2$x=2;echo $x==2 ? '我':$x == 1 ? '你' : '它'; //輸出你,從左到右依次執行。第一個三元表達式的結果是我,然后再第二個結果集就是你3、易錯題3$i=11;PRintf("%d ",printf("%d",printf("%d",$i))); //1211 printf函數返回值是字符串的長度4、易錯題4echo -10%3;結果是-15、易錯題5$a = 3;$b = 5;if($a = 5 || $b = 7) {$a++;$b++;}echo $a . " " . $b; //輸出結果是1,6。a是1,因為“||”運算符等級高于“=”,所有a的值就是(5||$b=7)這個表達式的值,其值為false,而false加1,仍然是1;后面的表達式中,$b的賦值未運行,所以$b是6;另外 $a++ 和 ++$a 分別是先返回a,在加1和先加1,再返回a6、易錯題6$val = max('string',array(2,5,7),42);$var = ?//如果同時給出數組和非數組作為參數,則總是將數組視為最大值返回7、易錯題7 $str1 = null; $str2 = false; echo $str1==$str2 ? ‘相等’ : ‘不相等’; //答案:相等 //解析: //php中很多人還不懂php中0, '', null 和false之間的區別,這些區別有時會影響到數據判斷的正確性和安全性,給程序的測試運行造成很多麻煩。先看一個例子:<?$str1 = null;$str2 = false;echo $str1==$str2 ? ‘相等’ : ‘不相等’;$str3 = "";$str4 = 0;echo $str3==$str4 ? ‘相等’ : ‘不相等’;$str5 = 0;$str6 = '0';echo $str5===$str6 ? ‘相等’ : ‘不相等’;$str7=0;$str=false;echo $str7==$str8 ? ‘相等’ : ‘不相等’;?>運行結果://相等,相等,不相等,相等。<!-- 原因是在PHP中變量是以C語言的結構體來存儲的,空字符串和NULL,false都是以值為0存儲的,其中這個結構體有個zend_uchartype;這樣的成員變量,他是用來保存變量的類型的,而空字符串的類型是string,NULL的類型是NULL,false是boolean。這一點可以用echo gettype('');和echogettype(NULL);來打印看看!而===運算符是不單比較值,還有比較類型的,所以第三個為false! 另外再說下,php中 =    一個等號是賦值==   兩個等號是判斷相等且只比較值,不比較類型===  三個等號是判斷值和類型都相等!=   不等于符號,只比較值,不管類型!==  不全等符號,比較值和類型所以可以這樣說===是等于下面的函數:function eq($v1,$v2) {if($v1 == $v2&&gettype($v1) ==gettype($v2)) {return 1;} else {return 0;}} 所以空字符串(''),false,NULL和0是值相等而類型不一樣!注意:NULL是一種特殊的類型.兩種情況下為NULL1. $var = NULL;2. $var;3.""、0、"0"、NULL、FALSE、array()、var $var; 以及沒有任何屬性的對象都將被認為是空的,如果var 為空,則返回 TRUE。 -->8、易錯題8<?php$test='aaaaaa';$abc = & $test;unset($test);echo $abc;?>輸出結果:aaaaaa<!-- 釋義:$abc = &$test; $abc,取$test地址指向的值unset($test); //消毀變量$test相當于從來沒有定義過$test了但是$test地址是不便的,值還存在。 -->9、易錯題9$count = 5;function get_count(){static $count = 0;return $count++;}echo $count;//5++$count;echo get_count();// 輸出0 但$count現在是1了 echo get_count();// 這里為什么輸入1?不是重新賦值了嗎?<!-- 解析:因為$count是靜態變量(static),不會因為重新調用函數而重新賦值,而是會保存每次運算完的結果,第二次調用get_count()前,$count已經為1,不會被 static $count = 0;重新賦值, -->
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 双桥区| 长武县| 北票市| 容城县| 靖西县| 明水县| 松滋市| 清原| 清流县| 武宣县| 凭祥市| 安陆市| 安乡县| 芜湖市| 民勤县| 年辖:市辖区| 明水县| 屏山县| 洛南县| 攀枝花市| 南川市| 丰都县| 镇远县| 青河县| 乌鲁木齐县| 仪陇县| 宣恩县| 渭源县| 九寨沟县| 莎车县| 盈江县| 金溪县| 巩留县| 永春县| 鹤岗市| 通州区| 白河县| 岳阳市| 达州市| 祁门县| 通州市|