<?     $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"这样都对,为什么?

解决方案 »

  1.   

    因为你没有给in_array指定第三个参数,因此只比较值是否相等。而 111 ,'111' ,"111" 三个的值是相等的。
      

  2.   

    首先2)和3)没区别
    其次你要看手册,in_array还有第三个参数,不使用默认false
    你加上第三个参数 true 试试?
      

  3.   


    先不用考虑第3个参数。
    PHP语法,int类型,可以用这三种方式表示?
      

  4.   

    不可以
    111  表示int
    '111' ,"111"  表示字符串
      

  5.   

    1 楼已经说过了,还是建议你去看下手册。
    http://php.net/manual/zh/function.in-array.php
      

  6.   


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

  7.   

    bool in_array ( mixed $needle , array $haystack [, bool $strict = FALSE ] )
    函数in_array(),第1个参数,其类型是:mixed.
    也就是:它的类型不确定,但是,它是PHP类型的其中一种!int整型:
    1)111
    2)'111'
    3)"111"
    这样写法,编译都没出错!
    也就是说,它们都是int整型了?
      

  8.   


    先不用考虑第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);
    并不会报错!
      

  9.   


    这个贴,问的是PHP类型。与函数in_array()第3个参数,没任何关系!
      

  10.   


    先不用考虑第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,类型都严格规范化!
      

  11.   

    感觉LZ是打死也不愿看手册的,那我就摘抄一下吧
    -----------------------------
    bool in_array ( mixed $needle , array $haystack [, bool $strict = FALSE ] )
    在 haystack 中搜索 needle,如果没有设置 strict 则使用宽松的比较。
    ……
    strict
    如果第三个参数 strict 的值为 TRUE 则 in_array() 函数还会检查 needle 的类型是否和 haystack 中的相同。
    -------------------------------
    希望不是打死也不愿看这楼