Hiển thị đồng hồ đếm ngược
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 64 trên 68.
Thử thách
DễBạn sẽ nhận ba đầu vào: một chuỗi JSON biểu diễn một mảng (array) sự kiện, một chuỗi ngày theo định dạng YYYY-MM-DD biểu thị ngày hôm nay và tên sự kiện cần hiển thị đồng hồ đếm ngược.
Đầ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"}]
Đầu vào thứ hai là một chuỗi ngày theo định dạng này: 2024-04-01
Đầu vào thứ ba là tên sự kiện theo định dạng này: Team Meeting
Đọc cả ba đầu vào và giải mã chuỗi JSON thành một mảng sự kiện. Tìm sự kiện khớp với tên sự kiện đã cho. Tạo các đối tượng DateTime cho cả ngày hôm nay và ngày diễn ra sự kiện.
Tính khoảng cách giữa ngày diễn ra sự kiện và ngày hôm nay. Dùng phương thức (method) diff() trên đối tượng DateTime của ngày hôm nay, truyền đối tượng DateTime của ngày diễn ra sự kiện làm tham số. Thao tác này trả về một đối tượng DateInterval. Truy cập thuộc tính (property) days của đối tượng này để lấy số ngày giữa hai ngày.
In đồng hồ đếm ngược theo định dạng sau:
Countdown to [event name]: [number of days] days
Nếu không tìm thấy sự kiện trong mảng, hãy in: Event not found
Định dạng đầu vào:
- Dòng thứ nhấ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: Chuỗi ngày theo định dạng YYYY-MM-DD biểu thị ngày hôm nay (ví dụ:
2024-04-01) - Dòng thứ ba: Tên sự kiện cần hiển thị đồng hồ đếm ngược (ví dụ:
Team Meeting)
Đầu ra mong đợi: Một dòng hiển thị đồng hồ đếm ngược theo định dạng: Countdown to [event name]: [number of days] days, hoặc Event not found nếu sự kiện không tồn tại
Tự làm thử
<?php
// Đọc đầu vào
$jsonString = trim(fgets(STDIN));
$todayDate = trim(fgets(STDIN));
$eventName = trim(fgets(STDIN));
// Giải mã chuỗi JSON thành mảng events
$events = (array)json_decode($jsonString, true);
// TODO: Viết code bên dưới
// Tìm sự kiện khớp với tên sự kiện đã cho
// Tạo các đối tượng DateTime cho ngày hôm nay và ngày diễn ra sự kiện
// Tính khoảng cách giữa hai ngày bằng phương thức diff()
// Truy cập thuộc tính days của đối tượng DateInterval
// In kết quả ra
echo $result;
?>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