PHP:如何实现函数在字符串不存在或为空时返回false?
解决rev_epur_str函数在字符串不存在时返回false的问题
你的代码目前有两个核心问题导致无法达到预期效果,我来一步步帮你修正:
问题1:未传入参数时触发警告且不返回false
你的函数定义要求必须传入$str参数,但调用rev_epur_str()时没有传参,PHP会直接抛出警告,根本不会执行到你后面的判断逻辑。解决方法是把$str设为可选参数,给它设置默认值null。
问题2:isset($str)的判断逻辑无效
isset()函数对于空字符串""会返回true,所以你的判断永远会走到返回$str的分支,这就是为什么调用rev_epur_str("")返回空串而非false的原因。我们需要更精准的判断条件,检查参数是否为null或者空字符串。
修正后的完整代码
function rev_epur_str($str = null) { // 先判断字符串是否不存在(未传参或空串/全空格串) if ($str === null || trim($str) === '') { return false; } // 执行原有的字符串处理逻辑 $str = implode(' ', array_map('strrev', explode(' ', $str))); $str = preg_replace('/\s+/', '', $str); return $str; }
测试验证
- 调用
var_dump(rev_epur_str()):会返回bool(false),且不再触发参数缺失警告 - 调用
var_dump(rev_epur_str("")):返回bool(false) - 调用
var_dump(rev_epur_str("hello world")):返回string(10) "ollehdlrow"(符合原函数的处理逻辑)
额外说明
我特意用了trim($str) === ''来判断,这样如果传入的是全空格的字符串(比如" "),也会被判定为“不存在”并返回false。如果你只希望严格判断空字符串"",可以把条件改成$str === null || $str === ''。
内容的提问来源于stack exchange,提问作者Margaret Osborn
相关产品推荐
相关产品推荐

