首页 » 网站建设 » php断定题php数据类型转换技巧_php踩过的那些坑3 数据类型转换

php断定题php数据类型转换技巧_php踩过的那些坑3 数据类型转换

访客 2024-12-15 0

扫一扫用手机浏览

文章目录 [+]

例1:

$str = ‘haodaquan';

php断定题php数据类型转换技巧_php踩过的那些坑3 数据类型转换

echo ($str == 0) ? 1 : 0;

php断定题php数据类型转换技巧_php踩过的那些坑3 数据类型转换
(图片来自网络侵删)

运行结果是:

1

这个坑,在好多公司的笔试题里涌现,当然没有这么直接的考,会隐晦一些,比如下面的题目:例2

$arr = [1,'aa'=>[2,2]];

foreach ($arr as $key => $value) {

if ($key=='aa') {

var_dump($value);

}

}

叨教打印的结果是什么?

事理是一样的:比较0==‘aa’,都是稽核字符串和数字比较较,即数据类型转换的问题。

结果如下:

int(1)

array(2) {

[0]=>int(2)

[1]=>int(2)

}

二、防坑攻略

在做比较运算时,应考虑比较双方的类型,弱类型措辞虽然对变量数据没有严格哀求,编程时也该当对变量数据的类型有所剖断。

三、为何有坑

“==”表示先将比较双方的类型转化成同一类型,然后在对值进行比较。
在例1中,比较”haodaquan“==0,首先将字符串”haodaquan“默认转换为integer类型(为啥是integer类型呢?后面揭晓),我们知道 (int)”haodaquan“=0,而0==0是成立的,以是结果显示为1。

四、防坑扩展

彻底弄清楚这些类型转换(便是刚才例1中为啥转换为integer类型)才是防坑的关键。
在php中数据类型之间的转换分为两种:逼迫类型转换和自动类型转换(有的也叫默认类型转换)。

1、逼迫类型转换

php数据类型转换的方法有三种,这里我们以字符串转浮点型为例,其他类型请自行查手册

$s = \"大众1a22aa.121\"大众;

#第一种逼迫类型转换:

var_dump((float)$s);

#第二种逼迫类型转换:

var_dump(floatval($s));

#第三种逼迫类型转换:

settype($s, 'float');

var_dump($s);

我常常利用第一种,大略。

其余,字符串逼迫转换浮点型或者整型,会从左边逐一检讨字符串,碰着不合格的字符涌现就停滞。

2、自动类型转换

1、算数运算符(加、减、乘、除、取余数等),自动按照数字型变量进行处理,也便是说,这些都是合法的。

$a = '123b';

$b = '12b';

var_dump($a+$b,$a-$b,$a$b,$a/$b,$a%$b);

2、“==” 做比较,如果比较一方是布尔型,则另一方转为布尔型再比较值。

如果比较一方是浮点型,则另一个先转为浮点型进行比较。
(另一方非布尔型)

如果比较一方是数字型,则另一个先转为数字型(int)进行比较。
(另一方非布尔型和浮点型)

以上估计够用了,想要更加深入,请参考php手册里的《PHP手册类型表》一节。

五、防坑互动:

1、下面代码:

$s = \"大众1.23a22aa.121\"大众;

var_dump((float)$s);

结果显示是:??

2、补上期的互动题目,也是笔试题里常常设置的坑题:

$a = count (\"大众abc\"大众);

$b = count (\"大众\"大众);

$c = count (null);

$d = count (false);

var_dump($a,$b,$c,$d);

结果显示是:??

3、补充一个烧脑的,估计答对的少:

$a = '123b';

$b = '12a';

var_dump($a<$b);

结果显示是:???

请看官们谈论结果吧 !
^_^

PS:开通头条以来第三篇文章,有些愉快,也有些紧张,这么多朋友捧场,也不知道看官们是否有收成。
大家韶光宝贵,您看文费时,我写文也费时(特殊是代码,都是编辑器里粘出来的,经由测试的),但也唯恐摧残浪费蹂躏了大家韶光。
总之,我恳切作文,不敷难免,请大家示正。

标签:

相关文章

php7012nts技巧_Composer依靠治理

举个例子,平时我们开始的时候如果不是用框架,想要一个验证码,就要先去Gihutb或者其他地方找一个验证码类,然后在项目中inclu...

网站建设 2024-12-17 阅读0 评论0