如何在多维数组中查找相同的值并创建仅具有唯一值的新数组?

双跳

我有一个数组,该数组已存储来自MySQL数据库的结果。

$time = "14:51:00"

Array
(
    [0] => Array
        (
            [name] => richard
            [id] => 61
            [chauffeurId] => 60
            [lat] => 53.0291365
            [lon] => 5.65739468598697
            [pickupdate] => 2021-01-25
            [departuretime] => 12:55:00
            [arrivalTime] => 13:46:00
            [finalDestination] => 5.81155877224893,52.9808856
        )

    [1] => Array
        (
            [name] => Jan
            [id] => 64
            [chauffeurId] => 63
            [lat] => 53.19968475
            [lon] => 5.80069089560234
            [pickupdate] => 2021-01-25
            [departuretime] => 12:45:00
            [arrivalTime] => 13:51:00
            [finalDestination] => 5.81155877224893,52.9808856
        )

    [2] => Array
        (
            [name] => richard
            [id] => 61
            [chauffeurId] => 60
            [lat] => 53.0291365
            [lon] => 5.65739468598697
            [pickupdate] => 2021-01-25
            [departuretime] => 13:49:00
            [arrivalTime] => 14:50:00
            [finalDestination] => 5.81155877224893,52.9808856
        )

    [3] => Array
        (
            [name] => joris
            [id] => 59
            [chauffeurId] => 58
            [lat] => 52.9026474
            [lon] => 5.59003021194087
            [pickupdate] => 
            [departuretime] => 
            [arrivalTime] => 
            [finalDestination] => 
        )

    [4] => Array
        (
            [name] => frans
            [id] => 60
            [chauffeurId] => 59
            [lat] => 53.018652
            [lon] => 5.533441
            [pickupdate] => 
            [departuretime] => 
            [arrivalTime] => 
            [finalDestination] => 
        )

    [5] => Array
        (
            [name] => henk
            [id] => 62
            [chauffeurId] => 61
            [lat] => 53.02030965
            [lon] => 5.53122986346911
            [pickupdate] => 
            [departuretime] => 
            [arrivalTime] => 
            [finalDestination] => 
        )

    [6] => Array
        (
            [name] => Joop
            [id] => 65
            [chauffeurId] => 64
            [lat] => 52.9026474
            [lon] => 5.59003021194087
            [pickupdate] => 
            [departuretime] => 
            [arrivalTime] => 
            [finalDestination] => 
        )

)

我在这个数组中有两个数组,它们具有相等的['chauffeurId']。所以我只想要两者之一。我想要的那个,需要有['arrivaltime'],它最接近$ time变量中存储的时间。

然后,该数组应如下所示:

Array
(
    [0] => Array
        (
            [name] => Jan
            [id] => 64
            [chauffeurId] => 63
            [lat] => 53.19968475
            [lon] => 5.80069089560234
            [pickupdate] => 2021-01-25
            [departuretime] => 12:45:00
            [arrivalTime] => 13:51:00
            [finalDestination] => 5.81155877224893,52.9808856
        )

    [1] => Array
        (
            [name] => richard
            [id] => 61
            [chauffeurId] => 60
            [lat] => 53.0291365
            [lon] => 5.65739468598697
            [pickupdate] => 2021-01-25
            [departuretime] => 13:49:00
            [arrivalTime] => 14:50:00
            [finalDestination] => 5.81155877224893,52.9808856
        )

    [2] => Array
        (
            [name] => joris
            [id] => 59
            [chauffeurId] => 58
            [lat] => 52.9026474
            [lon] => 5.59003021194087
            [pickupdate] => 
            [departuretime] => 
            [arrivalTime] => 
            [finalDestination] => 
        )

    [3] => Array
        (
            [name] => frans
            [id] => 60
            [chauffeurId] => 59
            [lat] => 53.018652
            [lon] => 5.533441
            [pickupdate] => 
            [departuretime] => 
            [arrivalTime] => 
            [finalDestination] => 
        )

    [4] => Array
        (
            [name] => henk
            [id] => 62
            [chauffeurId] => 61
            [lat] => 53.02030965
            [lon] => 5.53122986346911
            [pickupdate] => 
            [departuretime] => 
            [arrivalTime] => 
            [finalDestination] => 
        )

    [5] => Array
        (
            [name] => Joop
            [id] => 65
            [chauffeurId] => 64
            [lat] => 52.9026474
            [lon] => 5.59003021194087
            [pickupdate] => 
            [departuretime] => 
            [arrivalTime] => 
            [finalDestination] => 
        )

)

有什么可能的方法可以做到这一点?

HTM地狱

我能想到的最简单的方法是:

$result = [];

foreach ($array as $data) {
    $id = &$data['chauffeurId'];
    $data['timeDiff'] = abs($time - strtotime($data['arrivalTime']));
    $result[$id] = !isset($result[$id]) || $result[$id]['timeDiff'] > $data['timeDiff']
        ? $data
        : $result[$id];
}

print_r(array_values($result));

但是,如果要使用排序:

按时差对数组进行排序,然后迭代数组并存储每个id的时差。然后,检查是否已经迭代了当前ID,并且当前时差大于已迭代的ID,然后将其删除。

$timeDiffs = [];

$time = strtotime("14:51:00");

usort($array, function ($item1, $item2) use ($time) {
    $diff1 = abs($time - strtotime($item1['arrivalTime']));
    $diff2 = abs($time - strtotime($item2['arrivalTime']));
    
    return $diff1 <=> $diff2;
});

foreach ($array as $key => $data) {
    $id = &$data['chauffeurId'];
    $timeDiff = abs($time - strtotime($data['arrivalTime']));
    
    
    if (isset($timeDiffs[$id]) && $timeDiff > $timeDiffs[$id]) {
        unset($array[$key]);
    } else {
        $timeDiffs[$id] = $timeDiff;
    }
}

print_r($array);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何合并2个数组并创建具有唯一值的新数组,例如Union?

来自分类Dev

如何在多维数组中获取唯一值并为每个唯一值添加值?

来自分类Dev

在 dataweave 中创建具有唯一值的结果数组

来自分类Dev

在多维数组中查找具有“ SELECTED”值的数组

来自分类Dev

如何在新数组中获取Php多维数组相同键的相同值的相关总数?

来自分类Dev

如何在数组中查找唯一值

来自分类Dev

在多维度数组中删除具有相同键的重复值,并将唯一值存储到另一个数组

来自分类Dev

JavaScript-在带有计数的对象数组中查找唯一值,并创建一个新的对象数组

来自分类Dev

合并多维数组,并对在另一列中具有相同值的列值求和

来自分类Dev

合并多维数组,并对在另一列中具有相同值的列值求和

来自分类Dev

在多维数组中查找重复值并创建不包含重复项的新多维数组

来自分类Dev

使用现有数组中的唯一值创建新数组

来自分类Dev

如何在基于索引的多维数组中查找值

来自分类Dev

PHP从数组值创建新数组如果数组具有相同的值

来自分类Dev

如何从多维数组中求和相同的值?

来自分类Dev

php多维数组具有不同的唯一值,使键值数组

来自分类Dev

想要将具有唯一值的多维数组值插入php数据库

来自分类Dev

ElasticSearch:在具有复杂对象的数组中查找多个唯一值

来自分类Dev

创建一个新的对象数组并合并具有相同值的对象

来自分类Dev

如何将具有重复值的数组映射到Javascript中的唯一数组?

来自分类Dev

如何创建具有唯一值的新列

来自分类Dev

仅显示数组中的唯一值

来自分类Dev

在数组中查找唯一值

来自分类Dev

在数组中查找唯一值

来自分类Dev

在javascript中如何在具有嵌套数组的对象数组中查找值

来自分类Dev

如何获得具有不同键但在php中具有相同值的两个多维数组的差异?

来自分类Dev

如何对具有唯一值的数组进行排序

来自分类Dev

如何在选择标记中仅显示数组的唯一值作为选项?

来自分类Dev

如何在numpy数组中查找唯一的非nan值?

Related 相关文章

  1. 1

    如何合并2个数组并创建具有唯一值的新数组,例如Union?

  2. 2

    如何在多维数组中获取唯一值并为每个唯一值添加值?

  3. 3

    在 dataweave 中创建具有唯一值的结果数组

  4. 4

    在多维数组中查找具有“ SELECTED”值的数组

  5. 5

    如何在新数组中获取Php多维数组相同键的相同值的相关总数?

  6. 6

    如何在数组中查找唯一值

  7. 7

    在多维度数组中删除具有相同键的重复值,并将唯一值存储到另一个数组

  8. 8

    JavaScript-在带有计数的对象数组中查找唯一值,并创建一个新的对象数组

  9. 9

    合并多维数组,并对在另一列中具有相同值的列值求和

  10. 10

    合并多维数组,并对在另一列中具有相同值的列值求和

  11. 11

    在多维数组中查找重复值并创建不包含重复项的新多维数组

  12. 12

    使用现有数组中的唯一值创建新数组

  13. 13

    如何在基于索引的多维数组中查找值

  14. 14

    PHP从数组值创建新数组如果数组具有相同的值

  15. 15

    如何从多维数组中求和相同的值?

  16. 16

    php多维数组具有不同的唯一值,使键值数组

  17. 17

    想要将具有唯一值的多维数组值插入php数据库

  18. 18

    ElasticSearch:在具有复杂对象的数组中查找多个唯一值

  19. 19

    创建一个新的对象数组并合并具有相同值的对象

  20. 20

    如何将具有重复值的数组映射到Javascript中的唯一数组?

  21. 21

    如何创建具有唯一值的新列

  22. 22

    仅显示数组中的唯一值

  23. 23

    在数组中查找唯一值

  24. 24

    在数组中查找唯一值

  25. 25

    在javascript中如何在具有嵌套数组的对象数组中查找值

  26. 26

    如何获得具有不同键但在php中具有相同值的两个多维数组的差异?

  27. 27

    如何对具有唯一值的数组进行排序

  28. 28

    如何在选择标记中仅显示数组的唯一值作为选项?

  29. 29

    如何在numpy数组中查找唯一的非nan值?

热门标签

归档