Hướng dẫn php sort array by time - sắp xếp mảng php theo thời gian

--- mảng $ điểm ----

Array
    [
        [0] => Array
            [
                [0] => 2011-10-02 05:30:00
                [1] => 20
            ]

        [1] => Array
            [
                [0] => 2011-10-04 09:30:00
                [1] => 12
            ]

        [2] => Array
            [
                [0] => 2011-10-01 13:30:00
                [1] => 25
            ]

        [3] => Array
            [
                [0] => 2011-10-03 02:30:00
                [1] => 31
            ]

    ]

Tôi có một mảng ở trên và muốn sắp xếp mảng này theo thời gian. Sau đó, tôi đã sử dụng mã như sau để sắp xếp và kết quả là chính xác. Tuy nhiên, nếu tôi thay đổi mã time[$key] = $val[0] thành $time = $val[0], kết quả là sai.

Có ai có thể giải thích điều này với tôi không? Cảm ơn nhiều!

foreach[$points as $key=>$val]{

        $time[$key] = $val[0];

        array_multisort[$time, SORT_ASC, $points];
    }

Hakre

188K49 Huy hiệu vàng419 Huy hiệu bạc807 Huy hiệu đồng49 gold badges419 silver badges807 bronze badges

Đã hỏi ngày 3 tháng 1 năm 2012 lúc 16:09Jan 3, 2012 at 16:09

2

array_multisort sắp xếp nhiều hơn một mảng cùng một lúc. Tuy nhiên, nó hoạt động trên một mảng các cột, do đó, vòng lặp ____10 là cần thiết để có được một cột thời gian. Sau khi xây dựng danh sách này, sau đó bạn có thể thực hiện Multisort. Mảng

foreach[$points as $key=>$val]{

        $time[$key] = $val[0];

        array_multisort[$time, SORT_ASC, $points];
    }
1 được đặt hàng theo các chỉ số trong
foreach[$points as $key=>$val]{

        $time[$key] = $val[0];

        array_multisort[$time, SORT_ASC, $points];
    }
2, theo ví dụ này trong tài liệu.

Tuy nhiên, bạn không cần phải thực hiện sắp xếp bên trong

foreach[$points as $key=>$val]{

        $time[$key] = $val[0];

        array_multisort[$time, SORT_ASC, $points];
    }
0, vì điều đó có nghĩa là loại xảy ra 4 lần [trong ví dụ của bạn]. Nó chỉ cần xảy ra một lần:

foreach [$points as $key => $val] {
    $time[$key] = $val[0];
}

array_multisort[$time, SORT_ASC, $points];

Đã trả lời ngày 3 tháng 1 năm 2012 lúc 16:38Jan 3, 2012 at 16:38

cmbuckleycmbuckleycmbuckley

38.1k8 Huy hiệu vàng77 Huy hiệu bạc90 Huy hiệu Đồng8 gold badges77 silver badges90 bronze badges

Hàm

foreach[$points as $key=>$val]{

        $time[$key] = $val[0];

        array_multisort[$time, SORT_ASC, $points];
    }
4 có chức năng gọi lại so sánh. Bạn có thể sử dụng điều này để so sánh hai dấu thời gian.

$arr = array[
        array['2011-10-02 05:30:00','20'],
        array['2011-10-04 09:30:00','12'],
        array['2011-10-01 13:30:00','25'],
        array['2011-10-03 02:30:00','31']
];

function timecomp[$a,$b]
{
    // Subtracting the UNIX timestamps from each other.
    // Returns a negative number if $b is a date before $a,
    // otherwise positive.
    return strtotime[$b[0]]-strtotime[$a[0]];
}
uasort[$arr,'timecomp'];

print_r[$arr];

Mã trên sẽ trở lại

[
    [1] => Array
        [
            [0] => 2011-10-04 09:30:00
            [1] => 12
        ]

    [3] => Array
        [
            [0] => 2011-10-03 02:30:00
            [1] => 31
        ]

    [0] => Array
        [
            [0] => 2011-10-02 05:30:00
            [1] => 20
        ]

    [2] => Array
        [
            [0] => 2011-10-01 13:30:00
            [1] => 25
        ]

]

cmbuckley

38.1k8 Huy hiệu vàng77 Huy hiệu bạc90 Huy hiệu Đồng8 gold badges77 silver badges90 bronze badges

Hàm

foreach[$points as $key=>$val]{

        $time[$key] = $val[0];

        array_multisort[$time, SORT_ASC, $points];
    }
4 có chức năng gọi lại so sánh. Bạn có thể sử dụng điều này để so sánh hai dấu thời gian.Jan 3, 2012 at 16:23

Mã trên sẽ trở lạikba

cmbuckley5 gold badges61 silver badges87 bronze badges

5

Đã trả lời ngày 3 tháng 1 năm 2012 lúc 16:23

foreach[$points as $key=>$val]{
     $time[$val[1]] = $val[0]; // $time will be an array of [ point => time ] pairs
}
asort[ $time ]; // sorts the array and maintains indexes

Kbakba

$points = array_keys[ $time ];

19.2K5 Huy hiệu vàng61 Huy hiệu bạc87 Huy hiệu đồngJan 3, 2012 at 16:13

Những gì bạn muốn làm là [ý tưởng cơ bản]:Rijk

Sau đó, bạn có một mảng các cặp

foreach[$points as $key=>$val]{

        $time[$key] = $val[0];

        array_multisort[$time, SORT_ASC, $points];
    }
5, được sắp xếp theo thời gian. Để chỉ nhận được các điểm, ví dụ3 gold badges29 silver badges45 bronze badges

1

Làm cách nào để sắp xếp một mảng ngày trong PHP?

Sử dụng hàm usort [] để sắp xếp mảng. Hàm usort [] là hàm tích hợp PHP sắp xếp một mảng nhất định bằng cách sử dụng hàm so sánh do người dùng xác định. Hàm này gán các khóa tích phân mới bắt đầu từ 0 thành phần tử mảng.. The usort[] function is PHP builtin function that sorts a given array using user-defined comparison function. This function assigns new integral keys starting from zero to array elements.

Usort hoạt động như thế nào trong PHP?

Hàm usort [] trong PHP sắp xếp một mảng nhất định bằng cách sử dụng hàm so sánh do người dùng xác định. Hàm này rất hữu ích trong trường hợp nếu chúng ta muốn sắp xếp mảng theo cách mới. Hàm này gán các khóa tích phân mới bắt đầu từ 0 đến các phần tử có trong mảng và các khóa cũ bị mất.sorts a given array by using a user-defined comparison function. This function is useful in case if we want to sort the array in a new manner. This function assigns new integral keys starting from zero to the elements present in the array and the old keys are lost.

KSORT PHP là gì?

Hàm ksort [] sắp xếp một mảng kết hợp theo thứ tự tăng dần, theo khóa.Mẹo: Sử dụng hàm krsort [] để sắp xếp một mảng kết hợp theo thứ tự giảm dần, theo khóa.Mẹo: Sử dụng hàm orort [] để sắp xếp một mảng kết hợp theo thứ tự tăng dần, theo giá trị.sorts an associative array in ascending order, according to the key. Tip: Use the krsort[] function to sort an associative array in descending order, according to the key. Tip: Use the asort[] function to sort an associative array in ascending order, according to the value.

Làm thế nào để bạn sắp xếp một mảng các đối tượng trong PHP?

Hàm usort [] là một hàm sẵn có trong PHP được sử dụng để sắp xếp mảng các phần tử một cách có điều kiện với hàm so sánh nhất định.Hàm usort [] cũng có thể được sử dụng để sắp xếp một mảng các đối tượng theo trường đối tượng.usort[] function is an inbuilt function in PHP which is used to sort the array of elements conditionally with a given comparator function. The usort[] function can also be used to sort an array of objects by object field.

Bài Viết Liên Quan

Chủ Đề