Xóa phần tử đầu mảng bằng 'array_shift'
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 13 trên 68.
Hàm array_shift() xóa phần tử đầu tiên khỏi mảng và trả về giá trị đã xóa đó. Đây là thao tác ngược lại với array_unshift(), hàm thêm phần tử vào đầu mảng.
Cách hoạt động như sau:
<?php
$queue = ["Alice", "Bob", "Charlie"];
$firstPerson = array_shift($queue);
echo $firstPerson; // Đầu ra: Alice
print_r($queue); // Đầu ra: Array ( [0] => Bob [1] => Charlie )
?>Lưu ý rằng array_shift() vừa sửa đổi mảng ban đầu, vừa trả về phần tử đã xóa. Sau khi xóa phần tử đầu tiên, tất cả phần tử còn lại tự động dịch xuống để lấp chỗ trống: "Bob" chuyển từ chỉ số 1 sang chỉ số 0, còn "Charlie" chuyển từ chỉ số 2 sang chỉ số 1.
Việc đánh lại chỉ số này diễn ra tự động, giúp mảng của bạn luôn giữ đúng thứ tự số. Nếu bạn dùng array_shift() trên một mảng rỗng, hàm này trả về null mà không gây ra lỗi.
Hàm này đặc biệt hữu ích khi triển khai hàng đợi, nơi bạn xử lý các phần tử theo thứ tự “vào trước, ra trước”, chẳng hạn như phục vụ khách hàng trong hàng hoặc xử lý các tác vụ theo thứ tự nhận được.
Thử thách
DễBạn sẽ nhận hai đầu vào: một mảng khách hàng đang xếp hàng ban đầu ở định dạng JSON và một số cho biết cần phục vụ bao nhiêu khách hàng. Hãy đọc cả hai đầu vào, chuyển chuỗi JSON thành mảng, dùng array_shift() số lần đã cho để xóa những khách hàng đã được phục vụ ở đầu hàng, rồi in mảng cuối cùng bằng print_r().
Định dạng đầu vào: Hai dòng, dòng đầu tiên chứa một mảng JSON (ví dụ: ["Alice","Bob","Charlie","Diana"]), dòng thứ hai chứa số khách hàng cần phục vụ (một số)
Đầu ra mong đợi: Mảng sau khi xóa những khách hàng đã được phục vụ ở đầu hàng, được hiển thị bằng print_r()
Tự làm thử
<?php
// Đọc mảng JSON chứa danh sách khách hàng
$jsonInput = fgets(STDIN);
$customers = (array)json_decode($jsonInput, true);
// Đọc số khách hàng cần phục vụ
$numToServe = intval(fgets(STDIN));
// TODO: Viết code của bạn bên dưới
// Dùng array_shift() để lấy khách hàng ra khỏi đầu hàng đợi
// In ra mảng cuối cùng
print_r($customers);
?>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