我有这个问题:
$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并不起作用,因为没有任何东西得到回应。 我做错了什么?
答案 0 :(得分:4)
不会告发'吨
SELECT MAX(column_name) FROM table_name;
在查询中已经这样做了吗? 仅选择最高值 - 因此节省带宽并且不需要循环以浪费更多资源。 所有这些我无法用您的特定查询进行测试。
答案 1 :(得分:2)
$data['days']
不是一个数组。你有一系列阵列,每个阵列都有自己的“天”。元件。
你可以映射你的日期'元素到数组然后得到max()
:
echo max(array_map(function($d){
return $d['days'];
}, $data));
答案 2 :(得分:0)
正如我所看到你的数组是二维的,你需要遍历这个数组,然后从它们获得最大值。
for($i=0;$i<=sizeof($data);$i++) { echo max($data[$i]["days"]); }
这可以解决你的问题。