Php 来自MySQL的最大值来自数组的一部分

Php 来自MySQL的最大值来自数组的一部分,php,mysql,arrays,Php,Mysql,Arrays,我有一个MySQL查询中的数组,它有两个部分,我只想从第一部分获得最大值,但是当我执行max($row)时,它会返回日期的最大值,因为这些值更高。当我尝试max(数组列($row,'SUM(分配金额/汇率))我收到此错误max():数组必须至少包含一个元素是否有方法仅基于第一部分执行此操作 Array ( [SUM(DISTRIBUTED_AMOUNT / EXCHANGE_RATE)] => 19.1630000055071 [DATE] => 2013-11 )

我有一个MySQL查询中的数组,它有两个部分,我只想从第一部分获得最大值,但是当我执行
max($row)
时,它会返回日期的最大值,因为这些值更高。当我尝试
max(数组列($row,'SUM(分配金额/汇率))我收到此错误
max():数组必须至少包含一个元素
是否有方法仅基于第一部分执行此操作

Array
(
    [SUM(DISTRIBUTED_AMOUNT / EXCHANGE_RATE)] => 19.1630000055071
    [DATE] => 2013-11
)

在跟踪所需属性的同时使用foreach。以日期为例。保留一个变量MaxDate=FirstRow[Date]。然后遍历所有行,检查实际行是否高于实际的MaxDate。这是一种暴力方式,但肯定会奏效。您还可以使用SQL实际获取最大值

SELECT MAX(something) FROM 
       SELECT SUM(DISTRIBUTED_AMOUNT / EXCHANGE_RATE) AS something
       FROM whatever;
PHP暴力:

$max = $result[0]['SUM(DISTRIBUTED_AMOUNT / EXCHANGE_RATE)'];
foreach($result as $row){
    if($row['SUM(DISTRIBUTED_AMOUNT / EXCHANGE_RATE)'] > $max)
         max = $row['SUM(DISTRIBUTED_AMOUNT / EXCHANGE_RATE)'];
}

echo $max;

请注意,您必须使用结果中的所有行。请记住检查查询结果中是否有元素。

这是一个多维数组,并且您希望使用具有最大值的子数组作为
总和(分配金额/汇率)
?如果它是多维的,请在数组中多发布一点内容,并澄清输出应该是什么-是整个子数组,还是像
19.1630000055071
这样的单个值。如果您使用的是PHP5.5,那么使用
max(array\u column())
就可以很容易地完成它。这是一个多维数组,array\u column看起来是正确的,所以我尝试了这个
max(array\u column($row,'SUM(DISTRIBUTED\u AMOUNT/EXCHANGE\u RATE))
但是我得到了这个错误
max():数组必须至少包含一个元素
在同一个表达式中不能有两个聚合。您需要使用一个子查询——内部查询执行
SUM()操作,与任何操作一样
,外部查询执行
MAX(whatever)
。您是对的。我很抱歉。应该使用嵌套选择。我需要使用现有数组来执行此操作,因为我试图在不执行其他查询的情况下对已存在的查询执行此操作。然后使用我提到的蛮力metgod。那应该行得通。编辑:添加了PHP暴力。检查它是否有助于我在使用暴力方法时获得此错误
非法字符串偏移量'SUM(DISTRIBUTED_AMOUNT/EXCHANGE_RATE)