Tạo mảng 2 chiều
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 27 trên 68.
Mảng đa chiều là một mảng chứa các mảng khác làm phần tử. Loại phổ biến nhất là mảng 2D, bạn có thể hình dung nó như một lưới gồm các hàng và cột, tương tự như bảng tính hoặc bàn cờ.
Tạo mảng 2D trong PHP rất đơn giản. Bạn tạo một mảng mà mỗi phần tử cũng là một mảng:
<?php
$gameBoard = [
["", "", ""],
["", "", ""],
["", "", ""]
];
?>Lệnh này tạo một mảng 3x3, trong đó mỗi mảng bên trong biểu thị một hàng và mỗi phần tử trong các mảng đó biểu thị một cột. Bạn cũng có thể tạo mảng 2D với các kiểu dữ liệu khác nhau:
<?php
$scores = [
[85, 92, 78],
[90, 88, 95],
[76, 84, 89]
];
?>PHP cũng cung cấp hàm có sẵn array_fill(), giúp bạn nhanh chóng tạo một mảng chứa một giá trị cụ thể. Hàm này nhận ba đối số: chỉ số bắt đầu, số phần tử và giá trị cần điền:
<?php
// array_fill(start_index, num_elements, value)
$row = array_fill(0, 3, 0); // [0, 0, 0]
?>Bạn có thể kết hợp array_fill() với chính nó để tạo mảng 2D một cách hiệu quả. Ví dụ, để tạo lưới 3x3 mà mọi ô đều bắt đầu bằng 0:
<?php
$grid = array_fill(0, 3, array_fill(0, 3, 0));
// Kết quả: mảng (array) 3x3, mọi phần tử đều là 0
?>Mảng đa chiều rất hữu ích khi sắp xếp dữ liệu có cấu trúc như bàn cờ, bảng thông tin hoặc bất kỳ tình huống nào cần biểu diễn dữ liệu dưới dạng lưới. Mảng đa chiều giúp bạn làm việc tự nhiên hơn với các hàng và cột chứa thông tin liên quan.
Thử thách
DễBạn sẽ nhận ba đầu vào đại diện cho kích thước và giá trị ban đầu của mảng 2D: số hàng, số cột và giá trị dùng để điền vào từng vị trí. Hãy đọc các đầu vào này, tạo một mảng 2D có kích thước đã cho, trong đó mỗi phần tử được đặt thành giá trị đã cung cấp, rồi in mảng bằng print_r().
Định dạng đầu vào:
- Dòng đầu tiên: Số hàng (số nguyên)
- Dòng thứ hai: Số cột (số nguyên)
- Dòng thứ ba: Giá trị ban đầu cho mỗi phần tử (chuỗi)
Đầu ra mong đợi: Mảng 2D đã tạo, được hiển thị bằng print_r()
Tự làm thử
<?php
// Đọc đầu vào
$rows = intval(fgets(STDIN));
$columns = intval(fgets(STDIN));
$value = trim(fgets(STDIN));
// TODO: Viết code bên dưới để tạo mảng hai chiều
// In ra kết quả
print_r($array);
?>Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.
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ạngTự luyện tập: Trình biên dịch PHP online