PHP变量取值问题:空值替换与非空值获取的简化实现
嘿,这两个PHP场景的需求其实都有很简洁的实现方式,不用写一堆if else,我给你拆解说明:
问题1:若第一个变量为空,则使用第二个变量的值
PHP里有两个常用的运算符可以直接搞定这个需求,具体选哪个要看你对“为空”的定义:
短三元运算符(
?:):当第一个变量是「空值」时(包括空字符串''、数字0、布尔值false、null等),返回第二个变量的值$result = $var1 ?: $var2; // 等价于下面的if else,但写法更简洁 // $result = !empty($var1) ? $var1 : $var2;null合并运算符(
??):只在第一个变量为null时才返回第二个变量的值(空字符串、0这些非null的“空值”会被保留)$result = $var1 ?? $var2;
根据你的实际业务场景选择就行,比如如果0或者false算“有效取值”不能被替换,就用??;如果这些都算“空”要替换,就用?:。
问题2:变量式判断并获取两个变量中的非空项实际值
你想要的“变量式实现”其实就是用运算符或函数替代if else的逻辑,这里有两种常用方式:
最直接的方式:短三元运算符
其实和问题1的第一种写法完全一致,它本身就是一行式的变量逻辑判断,直接返回非空变量的实际值:$result = $var1 ?: $var2; // 比如$var1为空、$var2=123,$result就会是123;如果$var1=456非空,$result就是456数组过滤法(适合扩展到多个变量的场景)
如果后续可能要判断更多变量,把所有变量放进数组,过滤掉空值后取第一个非空项即可:$variables = [$var1, $var2]; // 过滤掉所有空值(规则和empty()一致) $nonEmptyVars = array_filter($variables); // 取第一个非空值,若所有变量都为空则返回false $result = current($nonEmptyVars);
这两种方式都不需要写if else,完全是用表达式/函数实现的变量式逻辑。
内容的提问来源于stack exchange,提问作者user7362769
相关产品推荐
相关产品推荐

