1. Hàm end() trong PHP

Hàm end() trong PHP giúp ta tìm và lấy ra phần tử cuối cùng trong mảng. Hàm end() sẽ thay đổi con trỏ nội bộ bên trong của mảng để trỏ đến phần tử cuối cùng của mảng và sau đó trả về phần tử này. Mỗi mảng đều có một con trỏ nội bộ 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. Còn hàm end() sẽ di chuyển con trỏ này đến phần tử cuối cùng. Hàm end() đượ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 end() trong PHP

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

end($array)

Trong đó hàm end() chỉ chấp nhận một đối số duy nhất là $array chính là mảng đầu vào. Đây là mảng mà ta muốn đưa con trỏ nội bộ về cuối và trả về phần tử cuối cùng của mảng. Nếu mảng rỗng thì giá trị trả về là False.

Ví dụ : xuất giá trị của phần tử hiện tại và phần tử cuối cùng trong một mảng

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

echo current($a1) . "<br>";
echo end($a1);
?>

Kết quả

PHP
Python

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

  • 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

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

Ví dụ 1:

<?php  
$crickter = array("sachin", "ganguly", "virat", "sehwag");  
echo end($crickter);   
?>

Kết quả

sehwag

Ví dụ 2:

<?php
   $a = array();
   $a[1] = 1;
   $a[0] = 0;
   echo end($a);
?>

Kết quả

0

Điều thú vị là khi tạo một mảng với các key dạng số không theo thứ tự cụ thể, hàm end() sẽ vẫn chỉ trả về giá trị là giá trị cuối cùng được tạo. Hàm end() trả về giá trị ở cuối mảng, nhưng đôi khi ta có thể quan tâm đến key ở cuối mảng, đặc biệt khi làm việc với các mảng được lập chỉ mục không phải là số nguyên.

Ví dụ 3:

<?php

$a = ['a' => ['hello' => 'a1','world' => 'a2'],
      'b' => ['hello' => 'b1','world' => 'b2'],
      'c' => ['hello' => 'c1','world' => 'c2']
    ];
$b = [];

echo '<pre>';
var_dump(end($a)['hello']). "<br>";
var_dump(end($b)['hello']). "<br>";
var_dump(false['hello']);

?>

Kết quả

string(2) "c1"
NULL
NULL

Cố gắng lấy giá trị của một key từ một mảng trống đến end() sẽ dẫn đến kết quả là NULL thay vì đưa ra lỗi hoặc cảnh báo do end() trên một mảng trống sẽ dẫn đến kết quả là False