日期:2014-05-17  浏览次数:20514 次

int类型?

<?

     $x1=array(1=>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"

这样都对,为什么?

------解决方案--------------------
引用:
Quote: 引用:

因为你没有给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);
并不会报错!