Hàm reset() trong PHP

Hàm reset() trong PHP
Hàm reset() trong PHP

Chức năng của Hàm reset() trong PHP

Hàm reset() trong PHP dùng để di chuyển con trỏ nội bộ của mảng về vị trí đầu tiên và lấy ra giá trị của phần tử đầu tiên, nếu mảng rỗng thì kết quả trả về rỗng.

Cú pháp của Hàm reset() trong PHP

$kết_quả = reset($biến_mảng_gốc);

$biến_mảng_gốc: Biến của mảng gốc.

$kết_quả: Kết quả di chuyển con trỏ nội bộ về vị trí đầu tiên của mảng và lấy ra giá trị của phần tử đầu tiên.

Ví dụ Hàm reset() trong PHP

<?php
$manggoc = array("Lực","Vân","Quỳnh", "Quỳnh", "Dung");
?>

<h2>Xem vị trí của con trỏ nội bộ nằm ở phần tử nào</h2>
<?php 
echo current($manggoc)."<br>"; // Kết quả: Lực
?>

<h2>Di chuyển con trỏ tới phần tử tiếp theo và lấy ra giá trị của phần tử tiếp theo đó</h2>
<?php 
echo next($manggoc)."<br>"; // Kết quả: Vân
?>

<h2>Di chuyển con trỏ tới phần tử tiếp theo và lấy ra giá trị của phần tử tiếp theo đó</h2>
<?php 
echo next($manggoc)."<br>"; // Kết quả: Quỳnh
?>

<h2>Di chuyển con trỏ về vị trí đầu tiên và lấy ra giá trị của phần tử đầu tiên</h2>
<?php 
echo reset($manggoc)."<br>"; // Kết quả: Lực
?>

Kết quả:

/////Xem vị trí của con trỏ nội bộ nằm ở phần tử nào
Lực

/////Di chuyển con trỏ tới phần tử tiếp theo và lấy ra giá trị của phần tử tiếp theo đó
Vân

/////Di chuyển con trỏ tới phần tử tiếp theo và lấy ra giá trị của phần tử tiếp theo đó
Quỳnh

/////Di chuyển con trỏ về vị trí đầu tiên và lấy ra giá trị của phần tử đầu tiên
Lực

Chạy Thử

Cách xử lý khi hàm reset() không trả về giá trị mong muốn

Khi sử dụng reset(), kết quả nhận được phụ thuộc vào trạng thái và cấu trúc của mảng tại thời điểm hàm được gọi. Nếu mảng rỗng hoặc biến truyền vào không phải là một mảng hợp lệ, việc xử lý có thể không cho kết quả như dự kiến.

Thay vì chỉ kiểm tra giá trị trả về, nên xác định trước dữ liệu đầu vào và mục đích sử dụng. Cách này giúp tránh nhầm lẫn giữa việc đưa con trỏ về phần tử đầu tiên và việc lấy một phần tử cụ thể trong mảng.

Kiểm tra mảng trước khi sử dụng reset()

Trước khi gọi reset(), nên kiểm tra mảng có tồn tại phần tử hay không. Với mảng rỗng, không có phần tử đầu tiên để lấy nên kết quả trả về không thể được sử dụng như một giá trị phần tử thông thường.

Có thể kiểm tra bằng empty() hoặc count() tùy tình huống. Nếu dữ liệu đến từ biểu mẫu, API hoặc nguồn bên ngoài, bước kiểm tra này càng cần thiết để tránh xử lý sai dữ liệu.

<?php
$products = [];

if (!empty($products)) {
    $firstProduct = reset($products);
    echo $firstProduct;
}
?>

Ngoài ra, cần đảm bảo biến truyền vào thực sự là mảng. Không nên gọi hàm trực tiếp trên dữ liệu chưa được kiểm tra kiểu, đặc biệt khi chương trình nhận dữ liệu động.

Phân biệt reset() với current() và end()

reset() đưa con trỏ nội bộ của mảng về phần tử đầu tiên và trả về giá trị của phần tử đó. Trong khi đó, current() chỉ lấy giá trị tại vị trí con trỏ hiện tại mà không đưa con trỏ về đầu mảng.

end() có tác dụng đưa con trỏ đến phần tử cuối cùng rồi trả về giá trị tại vị trí đó. Vì vậy, việc lựa chọn hàm cần dựa vào vị trí phần tử mà chương trình thực sự cần xử lý.

<?php
$data = [
    'first' => 'A',
    'second' => 'B',
    'third' => 'C'
];

$first = reset($data);
$current = current($data);
$last = end($data);
?>

Trong trường hợp cần bắt đầu lại quá trình duyệt mảng từ đầu, reset() là lựa chọn phù hợp. Nếu chỉ muốn đọc phần tử tại vị trí con trỏ hiện tại thì dùng current(), còn khi cần lấy phần tử cuối cùng thì end() sẽ phù hợp hơn.

Lời kết

Cảm ơn các bạn đã tham khảo bài viết Hàm reset() trong PHP.

  • 0 Bình luận
Trần Thị Vân | Content Creator Web Mới
Trần Thị Vân
Trần Thị Vân là Content Creator tại Web Mới, phụ trách nghiên cứu, biên soạn nội dung và chia sẻ kiến thức về website, SEO, lập trình cùng các xu hướng công nghệ
Đánh giá
Chia sẻ nội dung đánh giá của bạn về Hàm reset() trong PHP
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 *
Đánh giá của bạn
Tên *
Email
Số điện thoại *
Bình luận, Hỏi đáp
Yêu Cầu Báo Giá
Gửi trang web mẫu cần làm theo, chúng tôi sẽ báo giá đến bạn từ Email (tanlucit09@gmail.com - Bùi Tấn Lực) hoặc Zalo (Lực IT - 0398259259) !