PHP类型转详解

因为PHP是弱类型语言,所以在类型转换时会进行隐性转换,从而产生一些副作用。


1.在进行比较逻辑运算时的转换规则:

    一、如果比较一个整数和字符串,则字符串会被转换为整数。

     字符串转换为整数的规则如下:

     当一个字符串被当作数字来求值时,根据以下规则来决定结果的类型和值。

     如果包括“.”,“e”或“E”其中任何一个字符的话,字符串被当作 float 来求值。否则就被当作整数。

     该值由字符串最前面的部分决定。如果字符串以合法的数字字符开始到非数字字符结束,就用该数字作为其值,否则其值为 0(零)。合法数字数据由可选的正负号开始,后面跟着一个或多个数字(可选地包括十进制分数),后面跟着可选的指数。指数是一个“e”或者“E”后面跟着一个或多个数字。

代码如下:

<?php
var_dump(0 == "a"); // 0 == 0 -> true
var_dump(1 == "01"); // 1 == 1 -> true;”01“转换为十进制的1
var_dump(1 =="1a"); //1==1 -> true

switch ("a") {
case 0:
    echo "0";
    break;
case "a": // never reached because "a" is already matched with 0
    echo "a";
    break;
}//因为"a"转换数字时为0,所以输出"0";
?>

二、如果比较的两个字符串中只有数字和非打印字符,则会忽略这些非打印字符后再转换为数字后再进行比较:

<?php
     echo "     \v\f    \r   1234" + 1;    // 1235
     var_export ("\v\f    \r   1234" == "1234");    // true
?>





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值