【发布时间】:2021-06-20 09:22:43
【问题描述】:
我正在尝试使用 Laravel 使用集合来获取二维数组的最大值,但我得到的结果真的很奇怪。
我的代码:
dump($this->data);
dump(collect($this->data)->max());
dd(max(collect($this->data)->max()));
结果:
array:8 [▼
"2021-03-15" => array:2 [▼
"premium_time" => 0
"free_time" => 0
]
"2021-03-16" => array:2 [▼
"premium_time" => 740.2
"free_time" => 316.62
]
"2021-03-17" => array:2 [▼
"premium_time" => 623.46
"free_time" => 1953.46
]
"2021-03-18" => array:2 [▼
"premium_time" => 1445.85
"free_time" => 512.29
]
"2021-03-19" => array:2 [▼
"premium_time" => 477.76
"free_time" => 545.28
]
"2021-03-20" => array:2 [▼
"premium_time" => 414.61
"free_time" => 923.5
]
"2021-03-21" => array:2 [▼
"premium_time" => 803.16
"free_time" => 115.34
]
"2021-03-22" => array:2 [▼
"premium_time" => 401.14
"free_time" => 802.73
]
]
array:2 [▼
"premium_time" => 1445.85
"free_time" => 512.29
]
1445.85
正确的最大值是 1943.56 而不是 1445.85。这个结果对我来说毫无意义。
但是,max() 在我指定一个键时有效,但在这种情况下我必须循环所有数组...例如,此函数有效:
private function get_max(array $charts, array $data){
$max = 0;
foreach($charts as $k => $v){
$local_max = collect($this->data)->max($k);
if($local_max > $max){
$max = $local_max;
}
}
return $max;
}
所以我的问题是:
- 你知道
max()的真正作用吗? - 您知道我的
foreach解决方案是否更好吗?
干杯
【问题讨论】:
-
我不敢相信我错过了
flatten()方法。它确实有效!但是我不知道如何接受您的回答。
标签: php arrays laravel max laravel-8