1. Hàm each() trong PHP

Hàm each() trong PHP được dùng để lấy ra và trả về cặp key và value trong một mảng mà con trỏ bên trong mảng 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. Sau khi đã trả về cặp key và value của con trỏ hiện tại thì hàm each() sẽ tăng con trỏ lên một trong mảng. Giá trị trả về của hàm each() là một mảng gồm 4 phần tử . Hai phần tử đầu tiên sẽ có key1value với giá trị của nó là value của phần tử mảng được trả về. Hai phần tử sau sẽ có key0key với giá trị của nó là key của phần tử mảng được trả về. Hàm each() đượ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 each() trong PHP

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

each($array)

Trong đó hàm chỉ nhận một tham số là $array chính là mảng đầu vào mà ta cần lấy ra cặp keyvalue mà con trỏ đang trỏ đến. Giá trị trả về của hàm each() là một mảng gồm 4 phần tử. Trong 4 phần tử này có chứa key , valueindex của phần tử hiện tại. Hai phần tử đầu tiên sẽ có key là 1 và value với giá trị của nó là value của phần tử mảng được trả về. Hai phần tử sau sẽ có key là 0 và key với giá trị của nó là key của phần tử mảng được trả về. Nếu mảng được truyền vào là mảng rỗng hay con trỏ bên trong mảng đã trỏ đến phần tử cuối cùng của mảng thì hàm each() sẽ trả về False.

Ví dụ : trả lại keyvalue của phần tử hiện tại, đồng thời di chuyển con trỏ bên trong về phía trước

<?php
$a1 = array("PHP", "Java", "Python", "HTML");
echo '<pre>';
print_r (each($a1));
?>

Kết quả

Array
(
    [1] => PHP
    [value] => PHP
    [0] => 0
    [key] => 0
)

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

Ví dụ 1:

<?php
$a1 = array("PHP" => "Js", "HTML" => "CSS");
$a2 = each($a1);
echo '<pre>';
print_r($a2);
?>

Kết quả

Array
(
    [1] => Js
    [value] => Js
    [0] => PHP
    [key] => PHP
)

Ví dụ 2: duyệt mảng bằng each()

<?php
$a1 = array("PHP", "Java", "Python", "HTML");

reset($a1);

while (list($key, $val) = each($a1))
  {
  echo "$key => $val<br>";
  }
?>

Kết quả

0 => PHP
1 => Java
2 => Python
3 => HTML

Sau khi each() được thực thi con trỏ của mảng sẽ được di chuyển đến phần tử tiếp theo hoặc đi qua phần tử cuối cùng nếu nó chạm đến cuối mảng. Vì vậy ta phải sử dụng reset() để duyệt mảng bằng each() . Thông thường hàm each() hay được đi cùng list() để duyệt qua một mảng.

Bởi vì việc gán một mảng cho một biến khác sẽ đặt lại con trỏ của mảng ban đầu, ví dụ của này sẽ gây ra một vòng lặp vô tận nếu chúng ta gán $a1 cho một biến khác bên trong vòng lặp.

Chú ý

Hàm each() cũng sẽ chấp nhận các đối tượng, nhưng có thể trả về kết quả không mong muốn. Do đó khi thao tác với các Object không nên lặp lại các thuộc tính đối tượng với each() .

Sau khi đã đọc xong bài này ta có thể nắm được phần nào về each() trong PHP . Tuy nhiên each() không được khuyến khích sử dụng trong PHP . Hàm này đã không được sử dụng đối với PHP 7.2.0 và bị loại bỏ kể từ PHP 8.0.0. Việc dựa vào hàm này rất không được khuyến khích.