You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将包含sort()的PHP中位数函数整合为单行实现?

单行实现PHP中位数函数的技巧

没问题!要把这个中位数函数(包括sort()调用)塞进一行,核心技巧就是利用PHP的逗号运算符——它能让你在一个表达式里依次执行多个操作,最后返回最后一个操作的结果。

按你的原逻辑实现的单行版本

function Mediana($e = array()) { return (count($e) != 0) ? (sort($e), (count($e) % 2 == 0) ? (($e[(count($e)/2)] + $e[(count($e)/2)+1])/2) : $e[(count($e)/2)+1]) : 0; }

关键原理说明

  • 逗号运算符会先执行左边的sort($e)(因为sort()是引用传递,直接修改传入的数组$e),然后执行后面的三元判断逻辑,整个表达式最终返回三元运算的结果。
  • 这样就完全避免了把sort()单独拆成一行,真正实现了“一行内整合所有逻辑”的要求。

额外修正:索引偏移问题(可选)

顺便提一句,你原函数里的索引计算存在小问题——PHP数组是0起始索引的。比如当数组长度为偶数(比如4)时,正确的中位数应该取索引1和2的元素,但原代码取的是2和3,会导致结果偏移。如果需要修正这个问题,我们可以在单行里用intdiv取整,还能引入临时变量让逻辑更清晰:

function Mediana($e = array()) { return (count($e) != 0) ? (sort($e), $mid = intdiv(count($e), 2), count($e) % 2 == 0 ? ($e[$mid-1] + $e[$mid])/2 : $e[$mid]) : 0; }

这里同样用逗号运算符依次执行排序、定义$mid变量、计算中位数三个操作,既保持单行,又修正了逻辑问题。

内容的提问来源于stack exchange,提问作者JDev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 16:32:34