php - 查找关联数组中的范围

标签 php arrays range

我正在尝试从关联数组中找到一个范围。 数据来自 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/

相关文章:

arrays - 无法设置数组内字典的值 [Swift]

java - 使用 Spring 解析和使用 HTTP Range header

python - 过滤范围内的整数列表,以排除Python中的子集

PHP 解析器 : braces around variables

php - 当结果来自多个连接条件时如何在 cakephp 中分页

PHP 未设置 vs array_pop?

Javascript - 如何从数组中获取非零值?

php - Codeigniter 允许在插入查询中使用单引号

c++ - 这应该被称为对象切片的一些特殊情况吗?

iPhone 范围 slider