PHP sắp xếp theo ngày

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

Làm cách nào để sắp xếp dữ liệu theo ngày trong PHP?

Nếu ngày ở định dạng "Mysql" [ Y-m-d hoặc Y-m-d H. i. s ], thì bạn có thể sắp xếp mảng của mình ngay lập tức, không cần thực hiện hành động đặc biệt nào. $arr = ["2019-11-11", "2019-10-10","2019-11-11", "2019-09-08","2019-05-

Làm cách nào để sắp xếp ngày theo thứ tự tăng dần trong PHP?

Mảng sắp xếp PHP .
sort[] - sắp xếp mảng theo thứ tự tăng dần
rsort[] - sắp xếp mảng theo thứ tự giảm dần
asort[] - sắp xếp các mảng kết hợp theo thứ tự tăng dần, theo giá trị
ksort[] - sắp xếp các mảng kết hợp theo thứ tự tăng dần, theo khóa

Làm cách nào để sắp xếp ngày và giờ trong PHP?

Hàm php so sánh Date[$date1, $date2]{ if [strtotime[$date1] < strtotime[$date2]] trả về 1;

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

Chọn và sắp xếp dữ liệu từ cơ sở dữ liệu MySQL . Theo mặc định, mệnh đề ORDER BY sắp xếp các bản ghi theo thứ tự tăng dần. Để sắp xếp các bản ghi theo thứ tự giảm dần, hãy sử dụng từ khóa DESC. The ORDER BY clause is used to sort the result-set in ascending or descending order. The ORDER BY clause sorts the records in ascending order by default. To sort the records in descending order, use the DESC keyword.

Chủ Đề