Xin chào mọi người, hơi khó khăn khi cố gắng sắp xếp một mảng ngày tháng theo thứ tự thời gian mà tôi đã lấy từ cơ sở dữ liệu, rồi định dạng lại chúng. Sắp xếp chúng theo thứ tự thời gian không có vấn đề gì
$result = $conn->query[$sql];
if [$result->num_rows > 0] {
while[$row = $result->fetch_assoc[]] {
$dateReserved[] = $row['date'].'
';
?>
Array [ [0] => 2019-08-10 [1] => 2019-09-08 [2] => 2019-10-10 [3] => 2019-11-11 ]1
Hàm usort[] trong PHP cung cấp một cách dễ dàng để sắp xếp một mảng theo các giá trị. Phương thức usort[] có thể được sử dụng để sắp xếp một mảng kết hợp theo khóa-giá trị cụ thể bằng cách sử dụng PHP. Trong ví dụ này, chúng tôi sẽ chỉ cho bạn cách sắp xếp mảng nhiều chiều theo dữ liệu trong PHP
Đoạn mã sau giúp sắp xếp một mảng theo giá trị dữ liệu theo thứ tự tăng dần trong PHP
- Hàm strtotime[] dùng để chuyển đổi dữ liệu thành dấu thời gian với PHP
$events_arr = array[
array['title' => 'Event 1', 'date' => '2022-02-25'],
array['title' => 'Event 2', 'date' => '2022-02-21'],
array['title' => 'Event 3', 'date' => '2022-02-15'],
array['title' => 'Event 4', 'date' => '2022-01-22'],
array['title' => 'Event 5', 'date' => '2022-01-18']
];usort[$events_arr, function[$a, $b] {
return strtotime[$a['date']] - strtotime[$b['date']];
}];
Array [ [0] => 2019-08-10 [1] => 2019-09-08 [2] => 2019-10-10 [3] => 2019-11-11 ]2
Array [ [0] => 2019-08-10 [1] => 2019-09-08 [2] => 2019-10-10 [3] => 2019-11-11 ]3
ORIGINAL DATA:
';$data = array[
'Saturn|7|8|9|0||',
'Hello|0|1|2|3||',
'SFX|5|3|2|4||',
'HP|9|0|5|6||'
];
print_r[$data];
sort[$data];
reset[$data];
echo '
RAW SORT:
';
print_r[$data];
for [$c = 0; $c < count[$data]; $c++] {
list [$letter,$g1,$g2,$g3,$g4,$end] = explode ['|', $data[$c]];
$lowercase = strtolower[$letter];
$data2[$c] = array[$lowercase,$g1,$g2,$g3,$g4,$letter];
}
sort[$data2];
reset[$data2];
echo '
LOWERCASE SORT:
';
print_r[$data2];
echo '
Array [ [0] => 2019-08-10 [1] => 2019-09-08 [2] => 2019-10-10 [3] => 2019-11-11 ]4
Để sắp xếp một mảng ngày tháng trong PHP, mã như sau−
Thí dụ
Bản thử trực tiếp
đầu ra
Điều này sẽ tạo ra đầu ra sau−
Array [ [0] => 2019-08-10 [1] => 2019-09-08 [2] => 2019-10-10 [3] => 2019-11-11 ]
Thí dụ
Bây giờ chúng ta hãy xem một ví dụ khác -
Bản thử trực tiếp
strtotime[$date2]] return -1; else return 0; } $dateArr = array["2019-11-11", "2019-10-10","2019-11-11", "2019-09-08","2019-05-11", "2019-01-01"]; usort[$dateArr, "compareDates"]; print_r[$dateArr]; ?>
đầu ra
Điều này sẽ tạo ra đầu ra sau−
Array [ [0] => 2019-11-11 [1] => 2019-11-11 [2] => 2019-10-10 [3] => 2019-09-08 [4] => 2019-05-11 [5] => 2019-01-01 ]
Chúng tôi được cung cấp một mảng bao gồm nhiều ngày ở định dạng [Y-m-d]. Chúng ta phải viết một chương trình bằng PHP để sắp xếp tất cả các ngày có trong mảng theo thứ tự giảm dần
ví dụ
Input : array["2018-06-04", "2014-06-08", "2018-06-05"] Output : 2018-06-05 2018-06-04 2014-06-08 Input : array["2016-09-12", "2009-09-08", "2009-09-09"] Output : 2016-09-12 2009-09-09 2009-09-08
Khuyến khích. Vui lòng thử cách tiếp cận của bạn trên {IDE} trước, trước khi chuyển sang giải pháp
Để giải quyết vấn đề này trong C/C++/Java hoặc bất kỳ ngôn ngữ lập trình có mục đích chung nào khác, chúng tôi phải so sánh ngày dựa trên năm, tháng và cuối cùng là theo ngày bằng cách lưu trữ chúng trong bất kỳ cấu trúc nào hoặc bất kỳ cấu trúc dữ liệu mong muốn nào khác. Nhưng trong PHP vấn đề này dường như rất dễ dàng nếu chúng ta áp dụng hàm strtotime[]. Hàm strtotime[] là một hàm PHP thay đổi một ngày nhất định ở bất kỳ định dạng nào thành dấu thời gian có bản chất là một số nguyên lớn và sau đó trong khi sắp xếp mảng, chúng ta có thể dễ dàng sử dụng PHP. hàm usort[] bằng cách xác định hàm so sánh. Hàm so sánh sẽ chấp nhận hai đối số ngày sẽ được chuyển đổi thành dấu thời gian nguyên bằng cách sử dụng hàm strtotime[] và sau đó được so sánh với ngày sắp xếp dựa trên giá trị dấu thời gian nguyên
Chức năng sẵn có được sử dụng
- strtotime[]. Hàm này thay đổi chuỗi ngày đã cho thành dấu thời gian [giá trị int lớn]
- sắp xếp[]. Hàm này sắp xếp mảng đã cho theo hàm so sánh do người dùng xác định
Dưới đây là triển khai PHP của ý tưởng trên
Array [ [0] => 2019-08-10 [1] => 2019-09-08 [2] => 2019-10-10 [3] => 2019-11-11 ]5
Array [ [0] => 2019-08-10 [1] => 2019-09-08 [2] => 2019-10-10 [3] => 2019-11-11 ]6
Array [ [0] => 2019-08-10 [1] => 2019-09-08 [2] => 2019-10-10 [3] => 2019-11-11 ]7
Array [ [0] => 2019-08-10 [1] => 2019-09-08 [2] => 2019-10-10 [3] => 2019-11-11 ]8
Array [ [0] => 2019-08-10 [1] => 2019-09-08 [2] => 2019-10-10 [3] => 2019-11-11 ]9
strtotime[$date2]] return -1; else return 0; } $dateArr = array["2019-11-11", "2019-10-10","2019-11-11", "2019-09-08","2019-05-11", "2019-01-01"]; usort[$dateArr, "compareDates"]; print_r[$dateArr]; ?>0
strtotime[$date2]] return -1; else return 0; } $dateArr = array["2019-11-11", "2019-10-10","2019-11-11", "2019-09-08","2019-05-11", "2019-01-01"]; usort[$dateArr, "compareDates"]; print_r[$dateArr]; ?>1
strtotime[$date2]] return -1; else return 0; } $dateArr = array["2019-11-11", "2019-10-10","2019-11-11", "2019-09-08","2019-05-11", "2019-01-01"]; usort[$dateArr, "compareDates"]; print_r[$dateArr]; ?>2
Array [ [0] => 2016-09-12 [1] => 2009-09-09 [2] => 2009-09-06 ]0
Array [ [0] => 2016-09-12 [1] => 2009-09-09 [2] => 2009-09-06 ]1
Array [ [0] => 2016-09-12 [1] => 2009-09-09 [2] => 2009-09-06 ]2
Array [ [0] => 2016-09-12 [1] => 2009-09-09 [2] => 2009-09-06 ]3
Array [ [0] => 2016-09-12 [1] => 2009-09-09 [2] => 2009-09-06 ]4
Array [ [0] => 2016-09-12 [1] => 2009-09-09 [2] => 2009-09-06 ]5
Array [ [0] => 2016-09-12 [1] => 2009-09-09 [2] => 2009-09-06 ]6_______77
Array [ [0] => 2016-09-12 [1] => 2009-09-09 [2] => 2009-09-06 ]6
strtotime[$date2]] return -1; else return 0; } $dateArr = array["2019-11-11", "2019-10-10","2019-11-11", "2019-09-08","2019-05-11", "2019-01-01"]; usort[$dateArr, "compareDates"]; print_r[$dateArr]; ?>2
Array [ [0] => 2019-08-10 [1] => 2019-09-08 [2] => 2019-10-10 [3] => 2019-11-11 ]50______77
Array [ [0] => 2016-09-12 [1] => 2009-09-09 [2] => 2009-09-06 ]6
Array [ [0] => 2016-09-12 [1] => 2009-09-09 [2] => 2009-09-06 ]1
Array [ [0] => 2019-08-10 [1] => 2019-09-08 [2] => 2019-10-10 [3] => 2019-11-11 ]54
Array [ [0] => 2019-08-10 [1] => 2019-09-08 [2] => 2019-10-10 [3] => 2019-11-11 ]55
Array [ [0] => 2019-08-10 [1] => 2019-09-08 [2] => 2019-10-10 [3] => 2019-11-11 ]56
Array [ [0] => 2019-08-10 [1] => 2019-09-08 [2] => 2019-10-10 [3] => 2019-11-11 ]57
Array [ [0] => 2016-09-12 [1] => 2009-09-09 [2] => 2009-09-06 ]4
Array [ [0] => 2019-08-10 [1] => 2019-09-08 [2] => 2019-10-10 [3] => 2019-11-11 ]59
Array [ [0] => 2016-09-12 [1] => 2009-09-09 [2] => 2009-09-06 ]5
Array [ [0] => 2016-09-12 [1] => 2009-09-09 [2] => 2009-09-06 ]6
Array [ [0] => 2016-09-12 [1] => 2009-09-09 [2] => 2009-09-06 ]7
Array [ [0] => 2016-09-12 [1] => 2009-09-09 [2] => 2009-09-06 ]6
strtotime[$date2]] return -1; else return 0; } $dateArr = array["2019-11-11", "2019-10-10","2019-11-11", "2019-09-08","2019-05-11", "2019-01-01"]; usort[$dateArr, "compareDates"]; print_r[$dateArr]; ?>2
Array [ [0] => 2019-08-10 [1] => 2019-09-08 [2] => 2019-10-10 [3] => 2019-11-11 ]65
Array [ [0] => 2016-09-12 [1] => 2009-09-09 [2] => 2009-09-06 ]7
Array [ [0] => 2016-09-12 [1] => 2009-09-09 [2] => 2009-09-06 ]6
Array [ [0] => 2016-09-12 [1] => 2009-09-09 [2] => 2009-09-06 ]1
Array [ [0] => 2019-08-10 [1] => 2019-09-08 [2] => 2019-10-10 [3] => 2019-11-11 ]69
Array [ [0] => 2019-08-10 [1] => 2019-09-08 [2] => 2019-10-10 [3] => 2019-11-11 ]55
Array [ [0] => 2019-08-10 [1] => 2019-09-08 [2] => 2019-10-10 [3] => 2019-11-11 ]56
Array [ [0] => 2019-08-10 [1] => 2019-09-08 [2] => 2019-10-10 [3] => 2019-11-11 ]72
Array [ [0] => 2016-09-12 [1] => 2009-09-09 [2] => 2009-09-06 ]4
Array [ [0] => 2019-08-10 [1] => 2019-09-08 [2] => 2019-10-10 [3] => 2019-11-11 ]59
Array [ [0] => 2019-08-10 [1] => 2019-09-08 [2] => 2019-10-10 [3] => 2019-11-11 ]55
Array [ [0] => 2019-08-10 [1] => 2019-09-08 [2] => 2019-10-10 [3] => 2019-11-11 ]56
Array [ [0] => 2019-08-10 [1] => 2019-09-08 [2] => 2019-10-10 [3] => 2019-11-11 ]77
Array [ [0] => 2019-08-10 [1] => 2019-09-08 [2] => 2019-10-10 [3] => 2019-11-11 ]78
Array [ [0] => 2019-08-10 [1] => 2019-09-08 [2] => 2019-10-10 [3] => 2019-11-11 ]7
Array [ [0] => 2019-08-10 [1] => 2019-09-08 [2] => 2019-10-10 [3] => 2019-11-11 ]80
Array [ [0] => 2019-08-10 [1] => 2019-09-08 [2] => 2019-10-10 [3] => 2019-11-11 ]81
Array [ [0] => 2019-08-10 [1] => 2019-09-08 [2] => 2019-10-10 [3] => 2019-11-11 ]82______383
Array [ [0] => 2016-09-12 [1] => 2009-09-09 [2] => 2009-09-06 ]6
Array [ [0] => 2019-08-10 [1] => 2019-09-08 [2] => 2019-10-10 [3] => 2019-11-11 ]85
Array [ [0] => 2016-09-12 [1] => 2009-09-09 [2] => 2009-09-06 ]0
Array [ [0] => 2019-08-10 [1] => 2019-09-08 [2] => 2019-10-10 [3] => 2019-11-11 ]87
Array [ [0] => 2016-09-12 [1] => 2009-09-09 [2] => 2009-09-06 ]0
Array [ [0] => 2019-08-10 [1] => 2019-09-08 [2] => 2019-10-10 [3] => 2019-11-11 ]89
Array [ [0] => 2019-08-10 [1] => 2019-09-08 [2] => 2019-10-10 [3] => 2019-11-11 ]90