Thử thách: Tổng tiền giỏ hàng
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 67 trên 68.
Thử thách
DễBạn sẽ nhận một đầu vào duy nhất: một chuỗi JSON biểu diễn một mảng các mặt hàng trong giỏ hàng.
Đầu vào sẽ là một chuỗi JSON theo định dạng này: [{"name":"Laptop","price":999.99,"quantity":1},{"name":"Mouse","price":25.50,"quantity":2},{"name":"Keyboard","price":75.00,"quantity":1}]
Đọc đầu vào và giải mã chuỗi JSON thành một mảng các mặt hàng. Mỗi mặt hàng có ba thuộc tính: name, price và quantity.
Tính tổng chi phí của giỏ hàng bằng cách nhân giá của mỗi mặt hàng với số lượng tương ứng, sau đó cộng tất cả các kết quả. Dùng array_reduce() với một hàm callback tùy chỉnh để tính tổng này.
Sau khi tính tổng, in ra theo định dạng sau:
Total: $[amount]
Định dạng số tiền chính xác đến 2 chữ số thập phân bằng number_format().
Định dạng đầu vào:
- Một dòng duy nhất chứa chuỗi JSON biểu diễn mảng các mặt hàng trong giỏ hàng với các khóa
name,pricevàquantity
Đầu ra mong đợi: Một dòng hiển thị tổng chi phí theo định dạng: Total: $[amount], trong đó số tiền được định dạng đến 2 chữ số thập phân
Tự làm thử
<?php
// Đọc dữ liệu JSON đầu vào
$input = fgets(STDIN);
// Giải mã chuỗi JSON thành mảng
$items = (array)json_decode($input, true);
// TODO: Viết code bên dưới để tính tổng bằng array_reduce()
// Xuất kết quả
echo "Total: $" . number_format($total, 2);
?>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ản7Làm việc với ngày và giờ
Hàm 'date()'Dấu thời gian Unix với 'time()'Giới thiệu về đối tượng DateTimeĐịnh dạng đối tượng DateTimeChỉnh sửa đối tượng DateTimeÔn tập: Tính toán ngày10Thử thách cuối cùng
Thử thách: Kiểm tra chuỗi đối xứngThử thách: Tần suất ký tựThử thách: Tổng tiền giỏ hàngThử thách: Lọc phần tử duy nhất2Thao 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ạngTự luyện tập: Trình biên dịch PHP online