1. Hàm array_keys() trong PHP

Hàm array_keys() trong PHP được sử dụng để lấy ra toàn bộ key trong mảng đầu vào hoặc lấy ra key có giá trị được truyền vào. Nếu ta truyền vào một mảng thì hàm sẽ trả về một mảng chứa tất cả các key có trong mảng đó. Ngoài ra nếu ta truyền thêm tham số thứ hai cho hàm thì hàm sẽ trả về key tại phần tử truyền vào cùng với value tương ứng của nó trong mảng input. Ngoài ra ta cũng có thể truyền vào một tham số thứ ba để xác định giá trị value sẽ được trả về. Hàm này sẽ trả về các key , số hoặc chuỗi từ mảng đầu vào và làm value của mảng mới. Hàm array_keys() đượ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 array_keys() trong PHP

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

array_keys($input_array, $search_value, $strict)

Trong đó:

  • $input_array : mảng đầu vào mà ta muốn lấy dữ liệu . Tham số này là bắt buộc
  • $search_value : đề cập đến value của mảng mà ta muốn tìm kiếm. Nếu có tham số này trong hàm thì sẽ chỉ trả về giá trị có key tương ứng với tham số này. Nếu không thì hàm vẫn trả về tất cả key của mảng. Giá trị mặc định là null và sẽ là không bắt buộc có trong hàm
  • $strict : tham số này được sử dụng với value của mảng input. Hàm sẽ dùng tham số này để xem có so sánh chặt chẽ (===) giá trị này không. Trong đó :
  • True – Trả về các key với value đã xác định, phụ thuộc vào kiểu (số 5 là không giống với chuỗi “5”)
  • False – Giá trị mặc định. Không phụ thuộc vào kiểu (số 5 là giống với chuỗi “5”) – giá trị mặc định sẽ là False

Hàm array_keys() với giá trị truyền vào $array là một mảng hoặc khai báo thêm $search_value là giá trị cần tìm kiếm . Hàm sẽ trả về toàn bộ key của mảng đó hoặc trả về key của các phần tử có value thỏa mãn điều kiện với những điều kiện mà mình đã giải thích ở trên. Giá trị key của mảng cũ thỏa mãn sẽ là value của mảng mới.

Ví dụ : trả về key của một mảng

<?php
$a=array("PHP"=>"4","Java"=>"5","Python"=>"6");
print_r(array_keys($a));
?>

Kết quả

Array ( [0] => PHP [1] => Java [2] => Python )

Đây là ví dụ khá đơn giản. Trong ví dụ này thì không sử dụng thêm bất kỳ tham số điều kiện nào để lọc các key trong mảng. Vì vậy mặc định tất cả key trong mảng sẽ được trả về.

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

Ví dụ 1:

<?php
$a=array("PHP"=>"5","Java"=>"4","Python"=>"5","HTML"=>"6");
print_r(array_keys($a,"5"));
?>

Kết quả

Array ( [0] => PHP [1] => Python )

Ở đây dễ dàng thấy được ta đã truyền thêm tham số $search_value với giá trị tương ứng là 5 . Vì vậy hàm này sẽ chỉ in ra những keyvalue tương ứng 5. Nếu không có giá trị nào tương ứng thì một mảng rỗng sẽ được trả về ví dụ:

<?php
$a=array("PHP"=>"5","Java"=>"4","Python"=>"5","HTML"=>"6");
print_r(array_keys($a,"7"));
?>

Kết quả

Array ( )

Ví dụ 2:

<?php
$a=array(10,20,30,"10");
print_r(array_keys($a,"10",false));
?>
Array ( [0] => 0 [1] => 3 )

Ở ví dụ này ta sử dụng thêm tham số thứ ba là $strict với giá trị False. Đây cũng là giá trị mặc định nếu ta không truyền tham số này. Vậy nếu ta truyền nó là True thì sao? Cùng xem sự khác biệt nhé:

<?php
$a=array(10,20,30,"10");
print_r(array_keys($a,"10",true));
?>

Kết quả

Array ( [0] => 3 )

Nếu ta sử thành True thì chỉ có key với value là “10” thỏa mãn và nó sẽ so sánh với các giá trị khác bởi toán tử “===” . Ở đây “10” là kiểu chuỗi (String) nó khác với 10 là kiểm số (Number) . Vì vậy mà chỉ có một giá trị tương ứng được trả về.

Ví dụ 3:

<?php

$array = array("color" => array("blue", "red", "green"),
            "size"  => array("small", "medium", "large"));
echo "<pre>";
print_r(array_keys($array));            

    $diem = [
        'A' => [
            'Toán' => 8,
            'Lý' => 7,
            'Hóa'  => 9
        ],
        'B' => [
            'Toán' => 7,
            'Lý' => 8,
            'Hóa'  => 8
        ],
        'C' => [
            'Toán' => 9,
            'Lý' => 9,
            'Hóa'  => 9
        ],
    ];

echo "<pre>";
print_r(array_keys($diem));
?>

Kết quả

Array
(
    [0] => color
    [1] => size
)
Array
(
    [0] => A
    [1] => B
    [2] => C
)

Ở đây là việc sử dụng hàm array_keys() với mảng đa chiều. Các bạn có thể tham khảo thêm.