동일한 다차원 배열 값을 찾고 고유 한 값만으로 새 배열을 만드는 방법은 무엇입니까?

더블 점프

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']가 동일한 배열이 두 개 있습니다. 그래서 나는 둘 중 하나만 원합니다. 내가 원하는 것은 $ time 변수에 저장된 시간에 가장 가까운 [ 'arrivaltime']이 있어야합니다.

그러면 배열은 다음과 같아야합니다.

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] => 
        )

)

이를 수행하는 가능한 방법은 무엇입니까?

HTMHell

내가 생각할 수있는 가장 간단한 방법 :

$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를 반복했는지 확인하고 현재 시간 차이가 이미 반복 한 것보다 큰지 확인한 다음 제거합니다.

$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

PHP의 다차원 배열에서 고유 한 값을 얻는 방법은 무엇입니까?

분류에서Dev

고유 한 Android ID 배열을 만드는 방법은 무엇입니까?

분류에서Dev

고유 한 Android ID 배열을 만드는 방법은 무엇입니까?

분류에서Dev

Javascript가 두 번로드되고 동일한 배열에 다른 값을 선언하며 각 값을 유지하는 방법은 무엇입니까?

분류에서Dev

Snowsql GroupBy에서 배열을 결합하고 고유 한 값만 유지하는 방법은 무엇입니까?

분류에서Dev

고유 한 배열 값을 선택하는 방법은 무엇입니까?

분류에서Dev

배열에 고유 한 값만 유지하는 방법은 무엇입니까?

분류에서Dev

다른 배열을 기반으로 한 배열의 값을 조정하는 방법을 찾고 계십니까?

분류에서Dev

동일한 값을 변경하지 않고 다른 이름으로 문자열 배열 항목을 채우는 방법은 무엇입니까?

분류에서Dev

배열에서 특정 요소를 가져오고 배열 키 값의 비교를 기반으로 새 배열을 만드는 방법은 무엇입니까?

분류에서Dev

다차원 배열에서 FILTER를 사용하여 고유 한 값을 검색하는 방법은 무엇입니까?

분류에서Dev

배열 함수없이 배열에서 고유 한 값을 출력하는 방법은 무엇입니까?

분류에서Dev

개체를 요소로 포함하는 고유 한 배열을 만드는 방법은 무엇입니까?

분류에서Dev

배열 키를 일치시키고 새 배열에 값을 삽입하는 방법은 무엇입니까?

분류에서Dev

모든 요소가 배열, Ruby에서 동일한 경우 배열을 고유하게 만드는 방법은 무엇입니까?

분류에서Dev

반복하지 않고 다차원 배열 내에서 값을 찾는 방법은 무엇입니까?

분류에서Dev

Pandas : 동일한 열 값으로 여러 행을 결합하고 모든 가능성을 다루는 새 데이터 프레임을 만드는 방법은 무엇입니까?

분류에서Dev

동일한 데이터 프레임의 다른 열에서 고유 값을 포함하는 열 값을 찾는 방법은 무엇입니까?

분류에서Dev

방정식과 다른 열의 고유 값을 기반으로 새 열을 만드는 방법은 무엇입니까?

분류에서Dev

PHP에서 일부 값이 유사한 경우 다차원에서 새 배열을 만드시겠습니까?

분류에서Dev

"상수 배열"을 만드는 편리한 방법을 찾고 있습니다.

분류에서Dev

한 배열의 요소를 키로 다른 배열에 매핑하고 결과 값을 배열로 반환하는 방법은 무엇입니까?

분류에서Dev

Nodejs는 동일한 값이면 새 배열을 만듭니다.

분류에서Dev

키가 다르지만 PHP에서 동일한 값을 가진 두 개의 다차원 배열의 차이를 얻는 방법은 무엇입니까?

분류에서Dev

JavaScript-개수를 사용하여 개체 배열에서 고유 한 값을 찾고 개체의 새 배열을 만듭니다.

분류에서Dev

배열에 대한 참조를 저장하지 않고 일부 배열 값으로 객체를 만드는 방법은 무엇입니까?

분류에서Dev

숫자를 일치시키고 2 차원 배열을 만드는 방법은 무엇입니까?

분류에서Dev

그룹별로 고유 한 값을 만드는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    2 개의 배열을 병합하고 Union과 같은 고유 한 값으로 새 배열을 만드는 방법은 무엇입니까?

  2. 2

    PHP의 다차원 배열에서 고유 한 값을 얻는 방법은 무엇입니까?

  3. 3

    고유 한 Android ID 배열을 만드는 방법은 무엇입니까?

  4. 4

    고유 한 Android ID 배열을 만드는 방법은 무엇입니까?

  5. 5

    Javascript가 두 번로드되고 동일한 배열에 다른 값을 선언하며 각 값을 유지하는 방법은 무엇입니까?

  6. 6

    Snowsql GroupBy에서 배열을 결합하고 고유 한 값만 유지하는 방법은 무엇입니까?

  7. 7

    고유 한 배열 값을 선택하는 방법은 무엇입니까?

  8. 8

    배열에 고유 한 값만 유지하는 방법은 무엇입니까?

  9. 9

    다른 배열을 기반으로 한 배열의 값을 조정하는 방법을 찾고 계십니까?

  10. 10

    동일한 값을 변경하지 않고 다른 이름으로 문자열 배열 항목을 채우는 방법은 무엇입니까?

  11. 11

    배열에서 특정 요소를 가져오고 배열 키 값의 비교를 기반으로 새 배열을 만드는 방법은 무엇입니까?

  12. 12

    다차원 배열에서 FILTER를 사용하여 고유 한 값을 검색하는 방법은 무엇입니까?

  13. 13

    배열 함수없이 배열에서 고유 한 값을 출력하는 방법은 무엇입니까?

  14. 14

    개체를 요소로 포함하는 고유 한 배열을 만드는 방법은 무엇입니까?

  15. 15

    배열 키를 일치시키고 새 배열에 값을 삽입하는 방법은 무엇입니까?

  16. 16

    모든 요소가 배열, Ruby에서 동일한 경우 배열을 고유하게 만드는 방법은 무엇입니까?

  17. 17

    반복하지 않고 다차원 배열 내에서 값을 찾는 방법은 무엇입니까?

  18. 18

    Pandas : 동일한 열 값으로 여러 행을 결합하고 모든 가능성을 다루는 새 데이터 프레임을 만드는 방법은 무엇입니까?

  19. 19

    동일한 데이터 프레임의 다른 열에서 고유 값을 포함하는 열 값을 찾는 방법은 무엇입니까?

  20. 20

    방정식과 다른 열의 고유 값을 기반으로 새 열을 만드는 방법은 무엇입니까?

  21. 21

    PHP에서 일부 값이 유사한 경우 다차원에서 새 배열을 만드시겠습니까?

  22. 22

    "상수 배열"을 만드는 편리한 방법을 찾고 있습니다.

  23. 23

    한 배열의 요소를 키로 다른 배열에 매핑하고 결과 값을 배열로 반환하는 방법은 무엇입니까?

  24. 24

    Nodejs는 동일한 값이면 새 배열을 만듭니다.

  25. 25

    키가 다르지만 PHP에서 동일한 값을 가진 두 개의 다차원 배열의 차이를 얻는 방법은 무엇입니까?

  26. 26

    JavaScript-개수를 사용하여 개체 배열에서 고유 한 값을 찾고 개체의 새 배열을 만듭니다.

  27. 27

    배열에 대한 참조를 저장하지 않고 일부 배열 값으로 객체를 만드는 방법은 무엇입니까?

  28. 28

    숫자를 일치시키고 2 차원 배열을 만드는 방법은 무엇입니까?

  29. 29

    그룹별로 고유 한 값을 만드는 방법은 무엇입니까?

뜨겁다태그

보관