$a['modulesn'] = "0542509004725";
$b = "00542509004725";
一个是 以 0 开头,另一个是 以 00 开头。
按理说用 != 应该返回 true(不相等),但你说结果是 false(相等)。
原因:PHP 的弱类型比较(类型转换问题)
在 PHP 里,!=、== 会触发 弱类型比较:
如果两个字符串看起来都是 数字字符串,PHP 会把它们转换成数字再比较。
"0542509004725" 和 "00542509004725" 都会被转换成 542509004725(整数)。
转换后它们相等,所以 != 返回 false。
验证
var_dump((int)"0542509004725"); // int(542509004725)
var_dump((int)"00542509004725"); // int(542509004725)
结果一样。
解决办法
如果你想比较字符串本身,而不是数值:
用 全等比较 !== 或 ===
var_dump($a['modulesn'] !== $b); // true
或者强制用 字符串比较函数
var_dump(strcmp($a['modulesn'], $b) !== 0); // true
建议:凡是涉及可能带前导 0 的数据(比如条码、序列号、工号),一定要用 === 来比较,不要用 == 或 !=。