Menu
CoddyTech

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.

challenge icon

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

?>
quiz iconTự kiểm tra

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

Tự luyện tập: Trình biên dịch PHP online