猿问

如何从MySQL查询中计算关联数组的中值?

我得到了一个使用值的关联数组,fetchAll(PDO::FETCH_ASSOC) 并且得到了以下数组:

Array ( [0] => Array ( [value] => 12.00000 ) [1] => Array ( [value] => 12.00000 ) [2] => Array ( [value] => 1001.00000 ) [3] => Array ( [value] => 1001.00000 ) [4] => Array ( [value] => 1.00000 ) [5] => Array ( [value] => 101.00000 ) [6] => Array ( [value] => 155.00000 ) [7] => Array ( [value] => 100.00000 ) [8] => Array ( [value] => 100.14300 ) [9] => Array ( [value] => 10123.12000 ) )

如何获得中位数?我不能只使用arsort并获取中间值,因为它是数组中的一个数组,并且卡住了

怎么做?

编辑:我尝试使用array_column($array, 'value'),现在它提取了值,然后使用asort了以下输出:

Array ( [4] => 1.00000 [0] => 12.00000 [1] => 12.00000 [7] => 100.00000 [8] => 100.14300 [5] => 101.00000 [6] => 155.00000 [2] => 1001.00000 [3] => 1001.00000 [9] => 10123.12000 )

因此,问题在于asort确实对数组进行了排序,但仅对输出进行了排序,但实际上并未对数组进行排序,因此,例如,在我的情况下,$array[0]不是最小值(1.0000),而是实际上的原始值12.00000

我想念什么?


一只萌萌小番薯
浏览 152回答 1
1回答

翻阅古今

value使用以下命令从数组中提取字段:$values = array_column($array, 'value');// now `sort` and do what you needarsort($values);arsort 对数组进行排序。如果您打开手册,将会看到arsort对数组进行排序,以使数组索引与其关联的数组元素保持其相关性。因此,很显然,您需要另一个功能,我想rsort。
随时随地看视频慕课网APP
我要回答