Heim  >  Artikel  >  Backend-Entwicklung  >  int类型?

int类型?

WBOY
WBOYOriginal
2016-06-23 14:23:431029Durchsuche

<?     $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"

这样都对,为什么?


回复讨论(解决方案)

因为你没有给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

<?          $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"

你上个帖子已经问过了吧,好好去看下。

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 中的相同。
-------------------------------
希望不是打死也不愿看这楼

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn