PHP 如何类型转换
大家平时写代码时,肯定遇到过这种情况:想让数字和文字加在一起,结果出来的数字却变成了“123”(而不是预期的“123文字”);或者判断用户输入的年龄是整数,却不小心收到了带小数点的数字——这其实就是PHP里的类型转换在“搞事情”。
简单说,PHP里的“类型”就像生活里的“杯子”:有的杯子装水(数字型),有的装果汁(字符串型),有的是带刻度的小杯子(布尔型),如果硬把果汁倒进只能装水的杯子,就会发生“转换”。下面就用几个生活化的场景,把PHP的类型转换讲明白。

自动转换:PHP的“自动倒水”机制
PHP是个“怕麻烦”的语言,大部分时候会自动帮你转换类型,不用手动操作。举个例子:你去超市买东西,商品单价是5.9元(数字型),买2件的话,你可能会下意识算5.9+5.9=11.8,这就是PHP的自动转换:把数字和数字加在一起,还是数字。
但如果是“5元”(字符串型)加2,PHP会自动把“5元”里的数字部分提出来,变成5+2=7——就像你把写着“5个苹果”的标签,直接当成5个苹果的数量加2,得到7。不过要注意:如果字符串开头不是数字,比如“苹果5个”,加2的话PHP只会把它当成0,因为它找不到数字部分,就像你把写着“苹果”的标签当成0个苹果。
手动转换:你自己“换杯子”
如果自动转换不符合你的需求,就需要手动告诉PHP换个“杯子”,也就是用类型转换函数。
比如你想把数字5变成字符串“5”,这样就能和其他文字拼接成“订单号5”。可以用strval()函数,就像你把装水的杯子换成装果汁的杯子,举个例子:
`php
$num = 5; // 数字型的5
$str = strval($num); // 手动转成字符串型"5"
echo $str . "号订单"; // 输出"5号订单"
`
如果想把字符串“12”转成数字,方便算价格,就用intval()函数,就像把装果汁的杯子换成装水的杯子,举个例子:
`php
$str_price = "12"; // 字符串型的"12"
$num_price = intval($str_price); // 转成数字12
echo $num_price * 2; // 输出24,而不是"1212"
`
还有布尔型转换,比如判断用户有没有输入内容,empty()函数会把空字符串转成false,把非空转成true,就像你看杯子里有没有水,没水就是false,有水就是true。
转换的“坑”:别乱换杯子
虽然PHP的自动转换很方便,但也容易踩坑。比如你判断年龄是整数,用户输入了“18.5”,PHP自动转成整数的话,会直接砍掉小数点,变成18——就像你数苹果,看到18.5个苹果,下意识只数18个,忽略了0.5。如果是金额的话,这样就会少算0.5元,所以这种情况最好手动转换,或者过滤掉小数点。
还有字符串转数字时,遇到科学计数法,比如“1e3”,PHP会自动转成1000,就像你看到“1千个苹果”,直接当成1000个,如果你想保留“1e3”的字符串形式,就不能用自动转换,得手动用strval()。
总的来说,PHP的类型转换就像生活里换杯子,自动转换是帮你省力气,但手动转换能帮你避免麻烦,只要记清楚不同类型的转换规则,就不会踩坑啦。