Xuất Dữ Liệu Bảng Dưới Dạng Cây Phân Cấp
Trong PHP có một hàm tiện ích tên là print_r
cho phép hiển thị cấu trúc bảng một cách đệ quy. Hàm này được nhiều lập trình viên PHP ưa chuộng khi debug chương trình.
Theo kinh nghiệm cá nhân, tôi tin rằng bất kỳ ai từng lập trình Lua với quy mô vừa phải đều sẽ tự xây dựng một công cụ tương tự để dùng lâu dài. Trong quá trình debug code Lua gần đây, tôi nhận ra phiên bản print_r
đơn giản trước đây không đáp ứng tốt khi xử lý các bảng có cấu trúc phức tạp - đầu ra quá dài và thiếu trực quan. Thế là tôi tạm gác công việc chính lại, dành trọn 1 tiếng đồng hồ để viết lại hàm mới với hơn chục dòng code tinh gọn, giúp hiển thị bảng dữ liệu dưới dạng sơ đồ cây phân cấp.
Ví dụ minh họa:
|
|
Đầu ra tương ứng sẽ là:
|
|
Đoạn code tham khảo có tại: [Đường dẫn đến code]
Khi triển khai cần đặc biệt lưu ý hai vấn đề chính: Thứ nhất là xử lý tham chiếu vòng (vì khi mô phỏng cấu trúc cây bằng bảng, tham chiếu đến nút cha thường tạo ra mối quan hệ vòng). Thứ hai là logic vẽ đường phân nhánh - cần xử lý đặc biệt với nút con cuối cùng của mỗi cấp.
Mặc dù phong cách hiển thị chưa được đẹp mắt như các công cụ liệt kê thư mục trong terminal, nhưng tôi cho rằng đây là giải pháp đủ dùng với không gian hiển thị tối ưu. Những bạn muốn có giao diện trực quan hơn hoàn toàn có thể mở rộng chức năng bằng cách tùy biến logic hiển thị.