PHP能否在一行代码中通过多个操作完成变量赋值?
PHP一行完成多操作变量赋值的实现方法
PHP目前(包括最新版本)并不支持你伪代码里那种=> prev_result(...)的链式引用写法,但可以用其他语法在一行内完成目标赋值,不需要中间变量,以下是几种实用方案:
推荐方案:使用
array_pop()
直接对explode返回的临时数组调用array_pop(),它会取出数组最后一个元素,若数组为空则返回null,刚好和原代码逻辑一致:$short_class_name = array_pop(explode("\\", $class_name));使用
end()函数end()会将数组指针移到最后一个元素并返回它,空数组时返回false,配合?? null可以把false转为null,和原代码效果一致:$short_class_name = end(explode("\\", $class_name)) ?? null;注意:
end()会修改数组内部指针,但这里操作的是临时数组,不会影响其他变量,所以没问题。严谨型匿名函数写法(PHP 8.1+)
如果想避免潜在的索引问题,同时用array_key_last()精准获取最后一个键名,可以用匿名函数包裹逻辑:$short_class_name = (fn($cn) => ($p = explode("\\", $cn))[$p ? array_key_last($p) : 0] ?? null)($class_name);这种写法逻辑更严谨,但可读性稍弱,适合对索引安全要求高的场景。
内容的提问来源于stack exchange,提问作者ProtectedVoid
相关产品推荐
相关产品推荐

