PHP中整数作布尔值时非零即真、零为假;位运算按补码处理;验证整数应用filter_var而非is_int或ctype_digit;数组键和switch中需防隐式转换陷阱。

PHP整型逻辑运算怎么做 PHP中整数的布尔判断逻辑【攻略】

PHP里整数怎么当布尔值用

PHP中整数直接用于ifwhile等判断时,只看是不是零:非零即真,零为假。这不是“转换”,而是语言内置的隐式判定规则。

位运算符对负整数怎么算

PHP的&|^~<<>>全按补码处理,32位或64位取决于平台(PHP_INT_SIZE)。负数不是简单加个符号位,得按补码逻辑来。

filter_var($x, FILTER_VALIDATE_INT)判断是否为有效整数

别用is_int()ctype_digit()来验证用户输入的“整数字符串”,它们要么类型太死,要么不支持负号和进制前缀。

整型布尔判断在数组键和switch里的坑

数组键自动转整型,switch做松散比较,这两处最容易暴露隐式转换的副作用。

事情说清了就结束。最麻烦的是补码运算和松散比较混用的场景,比如把数据库查出的tinyint字段直接扔进switch又没意识到它可能是字符串,这种地方一踩一个准。
本文转载于:互联网 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。