Hàm array_slice() trong PHP
Trần Thị Vân
- 1183
- 03/08/2025
Chức năng của Hàm array_slice() trong PHP
Hàm array_slice() trong PHP dùng để lấy cột giá trị của các phần tử trong mảng gốc từ vị trí bắt đầu lấy ra mấy phần tử hoặc lấy đến hết mảng để cho vào mảng mới mà không làm thay đổi mảng gốc, cột giá trị bên mảng gốc sẽ làm cột giá trị bên mảng mới và các khóa (key) tạo mới lại từ đầu.
Cú pháp của Hàm array_slice() trong PHP
Từ vị trí bắt đầu đến hết mảng
$mảng_mới = array_slice($biến_mảng_gốc,vị_trí_bắt_đầu);
$biến_mảng_gốc: Biến của mảng gốc
vị_trí_bắt_đầu: Lấy cột giá trị của các phần tử từ vị trí bắt đầu đến cuối mảng.
$mảng_mới: Kết quả trả về mảng mới mà không làm thay đổi mảng gốc.
Từ vị trí bắt đầu lấy ra bao nhiêu phần tử
$mảng_mới = array_slice($biến_mảng_gốc,vị_trí_bắt_đầu, số_phần_tử_lấy_ra);
$biến_mảng_gốc: Biến của mảng gốc.
vị_trí_bắt_đầu: Lấy cột giá trị của các phần tử từ vị trí bắt đầu.
số_phần_tử_lấy_ra: Số phần tử lấy ra tính từ vị trí bắt đầu.
$mảng_mới: Kết quả trả về mảng mới mà không làm thay đổi mảng gốc.
Ví dụ Hàm array_slice() trong PHP
<h2>Hàm array_slice() lấy cột giá trị trong mảng bình thường</h2>
<?php
$manggoc = array("Dung","Hạ","Vân","Lực","Quỳnh","Nhím","Cherry");
// Bắt đầu từ vị trí thứ 2, lấy hết phần tử còn lại
$mangmoi = array_slice($manggoc,2);
print_r($mangmoi); // Kết quả: Array ( [0] => Vân [1] => Lực [2] => Quỳnh [3] => Nhím [4] => Cherry )
echo "<br>";
// Bắt đầu từ vị trí thứ 1, lấy 2 phần tử kế tiếp
$mangmoi2 = array_slice($manggoc,1,2);
print_r($mangmoi2); // Kết quả: Array ( [0] => Hạ [1] => Vân )
?>
<h2>Hàm array_slice() lấy cột giá trị trong mảng liên kết</h2>
<?php
$manglkgoc = array(35=>"Lực", 2 =>"Quỳnh", 29 =>"Vân");
// Bắt đầu từ vị trí thứ 1, lấy hết phần tử còn lại
$mangmoi = array_slice($manglkgoc,1);
print_r($mangmoi); // Kết quả: Array ( [0] => Quỳnh [1] => Vân )
echo "<br>";
// Bắt đầu từ vị trí thứ 1, lấy 2 phần tử kế tiếp
$mangmoi2 = array_slice($manglkgoc,1,2);
print_r($mangmoi2); // Kết quả: Array ( [0] => Quỳnh [1] => Vân )
?>
Kết quả:
/////Hàm array_slice() lấy cột giá trị trong mảng bình thường
Array ( [0] => Vân [1] => Lực [2] => Quỳnh [3] => Nhím [4] => Cherry )
Array ( [0] => Hạ [1] => Vân )
/////Hàm array_slice() lấy cột giá trị trong mảng liên kết
Array ( [0] => Quỳnh [1] => Vân )
Array ( [0] => Quỳnh [1] => Vân )
Những lưu ý quan trọng khi sử dụng array_slice() trong PHP
Hiểu đúng cách hoạt động của array_slice() sẽ giúp bạn tránh những lỗi thường gặp khi lấy một phần dữ liệu từ mảng. Đặc biệt, cần chú ý đến việc mảng gốc có bị thay đổi hay không, cách xử lý chỉ số âm và sự khác biệt về khóa khi tạo mảng mới.
array_slice() có làm thay đổi mảng ban đầu không?
array_slice() không thay đổi trực tiếp mảng ban đầu. Hàm tạo ra một mảng mới chứa phần tử được chọn, vì vậy dữ liệu trong mảng gốc vẫn được giữ nguyên.
<?php
$products = ['Laptop', 'Điện thoại', 'Máy tính bảng'];
$result = array_slice($products, 1, 2);
print_r($result);
print_r($products);
?>
Trong trường hợp trên, result chỉ chứa phần dữ liệu được cắt ra, còn products vẫn giữ đầy đủ các phần tử ban đầu. Đây là điểm hữu ích khi bạn cần tạo một tập dữ liệu tạm thời mà không muốn ảnh hưởng đến mảng đang sử dụng ở những phần khác của chương trình.
Xử lý chỉ số âm với array_slice()
array_slice() hỗ trợ chỉ số âm, cho phép xác định vị trí tính từ cuối mảng. Cách này đặc biệt thuận tiện khi bạn muốn lấy một số phần tử cuối mà không cần biết trước số lượng phần tử hiện có.
<?php
$products = ['Laptop', 'Điện thoại', 'Máy tính bảng', 'Tai nghe'];
$result = array_slice($products, -2);
print_r($result);
?>
Kết quả sẽ lấy hai phần tử cuối của mảng. Khi sử dụng chỉ số âm, nên xác định rõ vị trí bắt đầu để tránh lấy thừa hoặc thiếu dữ liệu, nhất là với các mảng có số lượng phần tử thay đổi.
Giữ hoặc loại bỏ khóa mảng khi cắt phần tử
Một điểm dễ gây nhầm lẫn là cách array_slice() xử lý khóa mảng. Theo mặc định, các khóa số của phần kết quả sẽ được đánh lại từ 0. Nếu muốn bảo toàn khóa, bạn có thể sử dụng tham số preserve_keys với giá trị true.
<?php
$products = [
10 => 'Laptop',
20 => 'Điện thoại',
30 => 'Tai nghe'
];
$result = array_slice($products, 1, 2, true);
print_r($result);
?>
Việc giữ khóa đặc biệt hữu ích khi khóa của mảng mang ý nghĩa riêng, chẳng hạn như mã sản phẩm hoặc mã bản ghi. Ngược lại, nếu chỉ cần một danh sách tuần tự để hiển thị, việc sử dụng khóa mặc định thường đơn giản và dễ xử lý hơn.
Khi nào nên dùng array_slice() thay vì các hàm xử lý mảng khác?
Nên chọn array_slice() khi mục tiêu chính là lấy một đoạn phần tử theo vị trí mà vẫn muốn giữ nguyên mảng ban đầu. Đây là lựa chọn phù hợp cho các trường hợp như lấy một nhóm sản phẩm, tạo dữ liệu cho từng phần của danh sách hoặc giới hạn số lượng phần tử cần xử lý.
Nếu mục đích là xóa phần tử trực tiếp khỏi mảng gốc, array_splice() sẽ phù hợp hơn. Nếu cần kiểm tra điều kiện để lọc dữ liệu thay vì dựa trên vị trí, nên cân nhắc các hàm lọc mảng khác.
Vì vậy, trước khi chọn hàm xử lý mảng, hãy xác định rõ bạn muốn lấy dữ liệu, xóa dữ liệu hay lọc dữ liệu. Điều này giúp tránh việc dùng array_slice() cho một tác vụ vốn cần đến cách xử lý khác.
Lời kết
Cảm ơn các bạn đã tham khảo bài viết Hàm array_slice() trong PHP.
- 0 Bình luận
Email, Điện thoại của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *