判断字符串是否为空的坑

<?php
declare(strict_types=1);
ini_set('display_errors', 'On');
ini_set('error_reporting', E_ALL);


$str = '0';


// 错误用法演示
if ($str) {
    echo '字符串非空' . PHP_EOL;
} else {
    echo '字符串为空' . PHP_EOL; // 字符串为空
}


// 正确用法演示
if ($str !== '') {
    echo '字符串非空' . PHP_EOL; // 字符串非空
} else {
    echo '字符串为空' . PHP_EOL;
}


//========== 总结 ==========//
// 1、在判断字符串是否为空时,必须使用全等比较运算符(===)或者不全等比较运算符(!==),否则可能会出现非预期结果。
//    当字符串为'0'时,如果缺省比较运算符,程序会先把字符串'0'转成数字0,这就是判断出现非预期结果的原因。
// 2、PHP的比较运算经常会出现隐式转换,例如两个比较对象中有一个是数字字符串或者两个都是数字字符串,会先转成数字再比较。
// 3、在PHP中,除了bool类型可以缺省比较运算符,其它类型都不应该缺省比较运算符,以提高程序的安全性。

Copyright © 2024 码农人生. All Rights Reserved