111,2=>22111,3=>3333); $y1=in_array(111,$x1); echo $y1; echo "\r\n"; $x2=array(1=>111,2=>2211,3=>3333); $y2=in_array('111',$x2); echo $y2; echo "\r\n"; $x3=array(1=>111,2=>2211,3=>3333); $y3=in_array("111",$x3); echo $y3; echo "\r\n"; ?>
問題:
上面PHP程式,函數第1個參數是:int類型,它可以用以下3種方式表示:
1)111
2)'111'
3)"111"
這樣都對,為什嗎?
回複討論(解決方案)
因為你沒有給in_array指定第三個參數,因此只比較值是否相等。而 111 ,'111' ,"111" 三個的值是相等的。
首先2)和3)沒區別
其次你要看手冊,in_array還有第三個參數,不使用預設false
你加上第三個參數 true 試試?
因為你沒有給in_array指定第三個參數,因此只比較值是否相等。而 111 ,'111' ,"111" 三個的值是相等的。
先不用考慮第3個參數。
PHP文法,int類型,可以用這三種方式表示?
不可以
111 表示int
'111' ,"111" 表示字串
不可以
111 表示int
'111' ,"111" 表示字串
為什麼程式是對?
1 樓已經說過了,還是建議你去看下手冊。
http://php.net/manual/zh/function.in-array.php
"a",2=>"b",3=>"c"); $y1=in_array(a,$x1); //這行有語法錯誤! //PHP Notice: Use of undefined constant a - assumed 'a' in /var/www/b.php on line 4 echo $y1; echo "\r\n"; $x2=array(1=>"a",2=>"b",3=>"c"); $y2=in_array('a',$x2); echo $y2; echo "\r\n"; $x3=array(1=>"a",2=>"b",3=>"c"); $y3=in_array("a",$x3); echo $y3; echo "\r\n"; ?>
函數in_array(),第1個參數是字元型。下面三種標記法:
1)a //PHP文法錯。
2)'a'
3)"a"
你上個文章已經問過了吧,好好去看下。
1 樓已經說過了,還是建議你去看下手冊。
http://php.net/manual/zh/function.in-array.php
bool in_array ( mixed $needle , array $haystack [, bool $strict = FALSE ] )
函數in_array(),第1個參數,其類型是:mixed.
也就是:它的類型不確定,但是,它是PHP類型的其中一種!
int整型:
1)111
2)'111'
3)"111"
這樣寫法,編譯都沒出錯!
也就是說,它們都是int整型了?
因為你沒有給in_array指定第三個參數,因此只比較值是否相等。而 111 ,'111' ,"111" 三個的值是相等的。
先不用考慮第3個參數。
PHP文法,int類型,可以用這三種方式表示?
php 是弱類型語言,會根據上下文自動變換資料類型
如
echo '111' + 2; //輸出 113
echo 111 . 2; //輸出 1112
對於 #8,當取消強制類型檢查時
error_reporting(E_ALL ^ E_NOTICE);
$x1=array(1=>"a",2=>"b",3=>"c");
$y1=in_array(a,$x1);
並不會報錯!
你上個文章已經問過了吧,好好去看下。
這個貼,問的是PHP類型。
與函數in_array()第3個參數,沒任何關係!
因為你沒有給in_array指定第三個參數,因此只比較值是否相等。而 111 ,'111' ,"111" 三個的值是相等的。
先不用考慮第3個參數。
PHP文法,int類型,可以用這三種方式表示?
php 是弱類型語言,會根據上下文自動變換資料類型
如
echo '111' + 2; //輸出 113
echo 111 . 2; //輸出 1112
對於 #8,當取消強制類型檢查時
error_reporting(E_ALL ^ E_NOTICE);
$x1=array(1=>"a",2=>"b",3=>"c");
$y1=in_array(a,$x1);
並不會報錯!
PHP這種弱類型語言。
不知它弱到什麼程度,有多少種可能?
如:int整型,就有3種寫法。
不像C語言,1 是1,2是2,類型都嚴格正常化!
弱是相對強的
C語言是強型別語言
所有的指令碼語言都是弱類型語言,因為他們都不需要有編譯過程。不需要預先分配儲存空間
感覺LZ是打死也不願看手冊的,那我就摘抄一下吧
-----------------------------
bool in_array ( mixed $needle , array $haystack [, bool $strict = FALSE ] )
在 haystack 中搜尋 needle,如果沒有設定 strict 則使用寬鬆的比較。
……
strict
如果第三個參數 strict 的值為 TRUE 則 in_array() 函數還會檢查 needle 的 類型是否和 haystack 中的相同。
-------------------------------
希望不是打死也不願看這樓