Trích xuất phần tử bằng 'array_slice'
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 16 trên 68.
Hàm (function) array_slice() cho phép bạn trích xuất một phần của mảng mà không làm thay đổi mảng ban đầu. Khác với các hàm như array_pop() hoặc array_shift(), vốn làm thay đổi mảng nguồn, array_slice() tạo một mảng mới chỉ chứa các phần tử bạn chỉ định.
Hàm (function) nhận hai tham số chính: offset (vị trí bắt đầu) và length (số phần tử cần trích xuất):
<?php
$scores = [95, 87, 92, 78, 85, 90, 88];
$topThree = array_slice($scores, 0, 3);
print_r($topThree); // In ra: Array ( [0] => 95 [1] => 87 [2] => 92 )
print_r($scores); // Mảng ban đầu không thay đổi
?>Tham số offset (parameter) cho PHP biết nơi bắt đầu trích xuất (0 nghĩa là phần tử đầu tiên), còn tham số length cho biết cần lấy bao nhiêu phần tử. Bạn cũng có thể dùng giá trị âm cho offset để bắt đầu đếm từ cuối mảng.
Hàm này đặc biệt hữu ích khi bạn cần làm việc với một tập hợp con của dữ liệu, chẳng hạn như chỉ hiển thị vài phần tử đầu tiên trong một danh sách lớn hoặc trích xuất một phạm vi phần tử cụ thể để xử lý, đồng thời vẫn giữ nguyên dữ liệu gốc.
Thử thách
DễBạn sẽ nhận ba đầu vào: một mảng giá sản phẩm ở định dạng JSON, vị trí bắt đầu (offset) và số lượng phần tử cần trích xuất (length). Đọc cả ba đầu vào, chuyển chuỗi JSON thành một mảng, dùng array_slice() để trích xuất phần được chỉ định của mảng và in lát cắt đã trích xuất bằng print_r().
Định dạng đầu vào: Ba dòng: dòng đầu tiên chứa một mảng số dạng JSON (ví dụ: [29.99,15.50,42.00,8.75,33.25]), dòng thứ hai chứa offset (vị trí bắt đầu), dòng thứ ba chứa length (số lượng phần tử cần trích xuất)
Đầu ra mong đợi: Phần được trích xuất của mảng, hiển thị bằng print_r()
Tự làm thử
<?php
// Đọc mảng JSON chứa các mức giá
$json_input = fgets(STDIN);
$prices = (array)json_decode($json_input, true);
// Đọc offset (vị trí bắt đầu)
$offset = intval(fgets(STDIN));
// Đọc length (số phần tử cần trích xuất)
$length = intval(fgets(STDIN));
// TODO: Viết code bên dưới để trích xuất một phần của mảng và in ra
?>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