PHP - 查找最大/最高值

时间:2014-11-04 14:40:14

标签: php pdo

我有这个问题:

    $stmt=$dbh->prepare("select round((expire - unix_timestamp()) / 86400) as days, count(*) as cnt from xeon_users_rented WHERE user_by=:username group by days;");
    $stmt->bindParam(":username",$userdata['username']);
    $stmt->execute();
    $data=$stmt->fetchAll();

返回此数组结果var_dump($data)

array(2) {
  [0]=>
  array(4) {
    ["days"]=>
    string(2) "27"
    [0]=>
    string(2) "27"
    ["cnt"]=>
    string(1) "2"
    [1]=>
    string(1) "2"
  }
  [1]=>
  array(4) {
    ["days"]=>
    string(3) "116"
    [0]=>
    string(3) "116"
    ["cnt"]=>
    string(1) "8"
    [1]=>
    string(1) "8"
  }
}

然后我希望获得$data结果的最高值:

echo max($data["days"]);    

Althoug并不起作用,因为没有任何东西得到回应。 我做错了什么?

3 个答案:

答案 0 :(得分:4)

不会告发'吨

SELECT MAX(column_name) FROM table_name;

在查询中已经这样做了吗? 仅选择最高值 - 因此节省带宽并且不需要循环以浪费更多资源。 所有这些我无法用您的特定查询进行测试。

答案 1 :(得分:2)

$data['days']不是一个数组。你有一系列阵列,每个阵列都有自己的“天”。元件。

你可以映射你的日期'元素到数组然后得到max()

echo max(array_map(function($d){
    return $d['days'];
}, $data));

Demo

答案 2 :(得分:0)

正如我所看到你的数组是二维的,你需要遍历这个数组,然后从它们获得最大值。

for($i=0;$i<=sizeof($data);$i++) { echo max($data[$i]["days"]); }

这可以解决你的问题。