我正在尝试从关联数组中找到一个范围。 数据来自 Racelogic(汽车性能 GPS 盒),因此我特别想从数组中提取 0-100。
完整数组可以在这里找到:link
看起来像这样(卫星,时间,纬度,经度,速度,航向,高度,垂直速度,偏航计算,滑动,YAW__,YAW_,):
Array
(
[31] => Array
(
[0] => 006
[1] => 194300,70
[2] => +03560,94626
[3] => -01079,53898
[4] => 009,490
[5] => 000,00
[6] => +00048,59
[7] => -000,432
[8] => +000,0
[9] => +0,00000E+00
[10] => +0,00000E+00
[11] => +0,00000E+00
[12] =>
)
[32] => Array
(
[0] => 005
[1] => 194300,80
[2] => +03560,94660
[3] => -01079,53760
[4] => 008,630
[5] => 259,90
[6] => +00050,46
[7] => -000,180
[8] => +000,0
[9] => +0,00000E+00
[10] => +0,00000E+00
[11] => +0,00000E+00
[12] =>
)
)
等等。在这种情况下,“4”是速度。 数据可以包含许多 0-100 次运行,我想提取它们。如何保存数据并不重要,可以是数组或字符串。 速度值永远不会精确地达到“100,000”,因此需要在超过“100,000”时达到,但范围应始终从“000,000”开始。
我对 PHP 相当了解,但这个逻辑/算法让我头晕了一段时间。非常感谢任何帮助或建议。
编辑:抱歉有点不具体,你自己的头脑总是更清楚。 这些数组包含速度数据,我想提取加速度运行,特别是 0-100。目前数据中有几个 0-100 的运行。这意味着我不仅需要最小值和最大值,还希望每次运行的所有数据都在 0-100 之间。我的最终目标是保存范围并使用 D3.js 回放它们,并在不同的汽车之间进行比较。
最佳答案
一种非常繁重的方法是按速度对整个数据集进行排序:
$data_sorted = usort($data, function($a, $b) {
return $a[4] < $b[4];
});
另一种方法是使用 array_column
首先将速度提取到自己的数组中:
$velocities = array_column($data, 4);
然后使用 min() 和 max() 或 sort() 来获取最小值和最大值。
第三次尝试是仅使用一个循环和 2 个运行变量。
$max = 0.0; $min = 100.0;
foreach ($data as $set) {
$max = max($max, $set[4]);
$min = min($min, $set[4]);
}
关于php - 查找关联数组中的范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32125092/