Sắp xếp sự kiện theo ngày
Thuộc phần Logic và luồng chương trình trong hành trình PHP của Coddy. Bài học 62 trên 68.
Thử thách
DễBạn sẽ nhận hai đầu vào: một chuỗi JSON biểu diễn một mảng sự kiện và một chuỗi ngày theo định dạng YYYY-MM-DD, biểu diễn ngày hôm nay.
Đầu vào thứ nhất là một chuỗi JSON theo định dạng này: [{"name":"Team Meeting","date":"2024-04-15","location":"Office"},{"name":"Conference","date":"2024-05-20","location":"Convention Center"},{"name":"Workshop","date":"2024-03-10","location":"Library"}]
Đầu vào thứ hai là một chuỗi ngày theo định dạng này: 2024-04-01
Đọc cả hai đầu vào và giải mã chuỗi JSON thành một mảng sự kiện. Lọc các sự kiện để chỉ giữ lại những sự kiện sắp diễn ra, tức là những sự kiện có ngày lớn hơn hoặc bằng ngày hôm nay.
Sắp xếp các sự kiện sắp diễn ra theo ngày tăng dần, từ ngày sớm nhất đến ngày muộn nhất, bằng usort() với một hàm so sánh tùy chỉnh. Hàm so sánh cần so sánh ngày của hai sự kiện và trả về một giá trị xác định thứ tự của chúng.
Sau khi sắp xếp, in từng sự kiện sắp diễn ra theo định dạng sau:
Upcoming: [name] on [date] at [location]
In mỗi sự kiện trên một dòng riêng, theo thứ tự thời gian từ ngày sớm nhất đến ngày muộn nhất.
Định dạng đầu vào:
- Dòng đầu tiên: Một chuỗi JSON biểu diễn mảng sự kiện với các khóa
name,datevàlocation - Dòng thứ hai: Một chuỗi ngày theo định dạng YYYY-MM-DD, biểu diễn ngày hôm nay (ví dụ:
2024-04-01)
Đầu ra mong đợi: In mỗi sự kiện sắp diễn ra trên một dòng riêng theo thứ tự thời gian, với định dạng: Upcoming: [name] on [date] at [location]
Tự làm thử
<?php
// Đọc chuỗi JSON chứa các sự kiện
$eventsJson = fgets(STDIN);
$events = (array)json_decode($eventsJson, true);
// Đọc ngày hôm nay
$todayDate = trim(fgets(STDIN));
// TODO: Viết code bên dưới
// Lọc các sự kiện sắp diễn ra (date >= ngày hôm nay)
// Sắp xếp các sự kiện sắp diễn ra theo ngày bằng usort()
// In từng sự kiện sắp diễn ra theo định dạng yêu cầu
?>Tất cả bài học trong Logic và luồng chương trình
1Hàm nâng cao
Hàm ẩn danhClosure và 'use'Hàm mũi tênHàm callbackDùng 'call_user_func'Hàm biếnTruyền tham chiếuHàm đệ quyÔn tập: tổng hợp về hàm4Mảng đa chiều
Tạo mảng 2 chiềuTruy cập phần tử trong mảng 2 chiềuChỉnh sửa phần tử trong mảng 2 chiềuLặp qua các vòng lặp lồng nhauMảng kết hợp 2 chiềuÔn tập: bài tập lưới đơn giản2Thao tác nâng cao với mảng
Thêm phần tử bằng 'array_push'Xóa phần tử bằng 'array_pop'Thêm phần tử vào đầu mảng bằng 'array_unshift'Xóa phần tử đầu mảng bằng 'array_shift'Gộp các mảng được đánh chỉ sốGộp các mảng kết hợpTrích xuất phần tử bằng 'array_slice'Kiểm tra giá trị bằng 'in_array'Tìm khóa bằng 'array_search'Ôn tập: bài tập về danh sách phát3Sắp xếp mảng
Sắp xếp mảng có chỉ số tăng dầnSắp xếp mảng có chỉ số giảm dầnSắp xếp mảng kết hợp theo giá trịSắp xếp mảng kết hợp theo khóaSắp xếp theo thứ tự tự nhiênSắp xếp tùy chỉnh bằng 'usort'Ôn tập: Sắp xếp bảng xếp hạng6Các hàm mảng bậc cao
Biến đổi bằng 'array_map''array_map' với hàm tùy chỉnhLọc bằng 'array_filter''array_filter' với hàm tùy chỉnhRút gọn bằng 'array_reduce'Duyệt bằng 'array_walk'Ôn tập: xử lý dữ liệu9Bộ lập lịch sự kiện
Dữ liệu sự kiệnThêm sự kiện mớiTự luyện tập: Trình biên dịch PHP online