1. Hàm current() trong PHP

Hàm current() trong PHP được dùng để lấy ra và trả về giá trị của phần tử trong một mảng mà con trỏ bên trong hiện đang trỏ đến. Mỗi mảng đều có một con trỏ nội tại tới phần tử current của nó. Khi một mảng mới được tạo, con trỏ hiện tại được khởi tạo để tham chiếu đến phần tử đầu tiên trong mảng. Hàm current() không tăng hoặc giảm con trỏ bên trong mảng sau khi trả về giá trị hay di chuyển con trỏ bằng bất kỳ cách nào. Nếu con trỏ nội bộ chỉ đến phần tử cuối cùng trong mảng hay là mảng trống thì hàm current() sẽ trả về FALSE. Hàm current() được giới thiệu và sử dụng từ phiên bản PHP 4.0

2. Cú pháp của hàm current() trong PHP

Ta có cú pháp của hàm current() trong PHP là :

current($array)

Trong đó $array chính là mảng mà ta muốn truyền vào hàm curren() để tìm ra giá trị. Hàm current() cũng chỉ nhận một tham số duy nhất là $array . Giá trị trả vê của hàm current()value của phần tử mảng mà hiện tại đang được trỏ bởi con trỏ nội tại này. Hàm này không di chuyển con trỏ nội tại này. Nếu con trỏ nội bộ chỉ đến phần tử cuối cùng trong mảng hay mảng rỗng thì hàm current() trả về FALSE.

Ví dụ : xuất ra giá trị của phần tử current trong một mảng

<?php
$people = array("PHP", "Java", "Python", "CSS");

echo current($people)
?>

Kết quả

PHP

Ta cũng có những hàm liên quan như:

  • end() : di chuyển con trỏ bên trong đến và xuất ra phần tử cuối cùng trong mảng
  • next() : di chuyển con trỏ bên trong đến và xuất ra phần tử tiếp theo trong mảng
  • prev() : di chuyển con trỏ bên trong đến và xuất ra phần tử trước đó trong mảng
  • reset() : di chuyển con trỏ bên trong đến phần tử đầu tiên của mảng
  • each() : trả về khóa và giá trị của phần tử hiện tại và di chuyển con trỏ bên trong về phía trước

Lưu ý

Kết quả của việc gọi current() trên một mảng trống và trên một mảng, có con trỏ bên trong trỏ ra ngoài phần cuối của các phần tử, không thể phân biệt được với phần tử boolean False . Để duyệt đúng một mảng có thể chứa các phần tử False, hãy xem cấu trúc điều khiển foreach . Để vẫn sử dụng current() và kiểm tra chính xác xem giá trị có thực sự là một phần tử của mảng hay không, key của phần tử current() phải được kiểm tra để hoàn toàn khác với null.

3. Ví dụ về hàm current() trong PHP

Ví dụ 1:

<?php  
$array = array("lap", "trinh", "tu", "dau", ".com");  
print_r(current($array));
?>

Kết quả

lap

Ví dụ 2:

<?php  
$array = array("lap", "trinh", "tu", "dau", ".com");  
next($array);  
print_r(current($array));
?>

Kết quả

trinh

Ví dụ này thì ta có sử dụng thêm next() để di chuyển con trỏ bên trong đến và xuất ra phần tử tiếp theo trong mảng.

Ví dụ 3

<?php

$arr = array('PHP', 'Java', 'Python', 'HTML');

echo current($arr)."<br>"; //PHP

// tăng con trỏ nội bộ 
echo next($arr)."<br>"; //Java

echo current($arr)."<br>"; //Java

// tăng con trỏ nội bộ 
echo next($arr)."<br>"; //Python

// tăng con trỏ nội bộ 
echo next($arr)."<br>"; //HTML

echo current($arr)."<br>"; //HTML

?>

Kết quả

PHP
Java
Java
Python
HTML
HTML

Ví dụ 4: Trong trường hợp muốn tìm kiếm một giá trị phù hợp và xóa nó khỏi mảng, nhưng vẫn muốn chương trình đưa con trỏ về ban đầu, có thể sử dụng cách sau

<?php
$prices = array(
    0 => '1300990',
    1 => '500',
    2 => '600'
);
foreach($prices as $key => $price){
    if($price < 1000){
        unset($prices[$key]);
    }
}

var_dump(current($prices)); // bool(false)
?>

Kết quả

string(7) "1300990"