关于PHP中嵌套If语句实现价格格式化函数的技术问询
解决PHP中价格格式化的嵌套If语句问题
我来帮你搞定这个价格格式化的需求,其实逻辑很清晰,咱们可以写一个简洁的函数来实现,甚至能避免复杂的嵌套if,先看最直观的实现方案:
简洁版(使用空合并运算符,PHP7+支持)
function formatPrice($price, $price_label_before, $currency) { // 先判断价格是否不为0,这是格式化的前提条件 if ($price !== 0) { // 优先用price_label_before,它为null时就用currency $displayLabel = $price_label_before ?? $currency; return "$displayLabel $price"; } // 如果价格为0,这里可以根据你的需求返回空、0或者其他内容,默认返回空字符串 return ''; }
测试你的示例
- 示例1调用:
formatPrice(2000, 'USD', 'KES'),返回结果:USD 2000 - 示例2调用:
formatPrice(2000, null, 'KES'),返回结果:KES 2000
嵌套If语句实现版本(如果你更习惯用嵌套逻辑)
要是你想明确用嵌套if来写,也完全没问题,逻辑和上面一致,只是写法更直白:
function formatPrice($price, $price_label_before, $currency) { if ($price !== 0) { // 内层判断price_label_before是否不为null if (!is_null($price_label_before)) { return "$price_label_before $price"; } else { return "$currency $price"; } } return ''; }
小提示
- 这里用
$price !== 0而不是$price != 0,是为了严格判断类型,避免把'0'这类字符串误判为0的情况(如果你的price有可能是字符串类型的话)。 - 空合并运算符
??是PHP7之后才支持的,它会自动忽略null值,直接取第一个非null的变量,比写isset()或者is_null()更简洁。
内容的提问来源于stack exchange,提问作者user38208
相关产品推荐
相关产品推荐

