1. Hàm array_column() trong PHP

Hàm array_column() trong PHP dùng để lấy một cột trong một mảng và trả về giá trị từ một cột duy nhất đó. Nó sẽ lấy một mảng đơn từ mảng đa chiều. Ở đây hàm array_column() giúp tạo ra một mảng mới là mảng một chiều từ mảng đa chiều ban đầu dựa vào key của mảng đa chiều này.

2. Cú pháp hàm array_column() trong PHP

Cú pháp hàm array_column() trong PHP:

array array_column($input_array, $column_number, $index_key);

Trong đó:

  • $input_array (bắt buộc): Tham số này đề cập đến mảng đa chiều ban đầu mà chúng ta muốn trích xuất tất cả các giá trị của một cột cụ thể.
  • $column_number (bắt buộc): Tham số này đề cập đến cột giá trị cần được trả về. Giá trị này có thể là một khóa số nguyên của cột hoặc nó có thể là một tên khóa chuỗi cho một mảng kết hợp hoặc tên thuộc tính. Nó cũng có thể là NULL để trả về mảng hoặc đối tượng hoàn chỉnh.
    $index_key (tùy chọn): Đây là một tham số tùy chọn và tham chiếu đến cột để sử dụng làm chỉ mục / key cho mảng được trả về ở đầu ra. Giá trị này có thể là key số nguyên của cột hoặc có thể là tên khóa chuỗi.

Như trong cú pháp, kiểu trả về của hàm array_column() là mảng. Nghĩa là, hàm trả về một mảng chứa các giá trị từ một cột duy nhất của mảng đầu vào, được xác định bởi column_number . Theo tùy chọn, một index_key cũng có thể được cung cấp để lập chỉ mục các giá trị trong mảng được trả về bởi các giá trị từ cột index_key của mảng đầu vào.

Ví dụ:

<?php
$a = array(
  array(
    'id' => 1234,
    'first_name' => 'Thành',
    'last_name' => 'Nguyễn',
  ),
  array(
    'id' => 1235,
    'first_name' => 'Nam',
    'last_name' => 'Chu',
  ),
  array(
    'id' => 1236,
    'first_name' => 'Sơn',
    'last_name' => 'Phùng',
  )
);

$last_names = array_column($a, 'last_name');
print_r($last_names);
?>

Kết quả

Array
(
  [0] => Nguyễn
  [1] => Chu
  [2] => Phùng
)

Đây là trường hợp mà không có $index_key

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

Ví dụ 1: Lấy cột last_name được lập chỉ mục bởi cột id . Ta sẽ lấy luôn mảng trong ví dụ trên

<?php 
$a = array(
    array(
        'id' => 1234,
        'first_name' => 'Thành',
        'last_name' => 'Nguyễn',
    ),
    array(
        'id' => 1235,
        'first_name' => 'Nam',
        'last_name' => 'Chu',
    ),
    array(
        'id' => 1236,
        'first_name' => 'Sơn',
        'last_name' => 'Phùng',
    )
);
  
$last_names = array_column($a, 'last_name', 'id');
echo '<pre>';
print_r($last_names);
?>

Kết quả

Array
(
    [1234] => Nguyễn
    [1235] => Chu
    [1236] => Phùng
)

Ta có thể thấy đây là ví dụ có cả ba tham số trong đó có tham số $index_key mà ví dụ trước không có.

Ví dụ 2: sử dụng array_column để lấy Property từ một Object

<?php

class User
{
    public $username;

    public function __construct(string $username)
    {
        $this->username = $username;
    }
}

$users = [
    new User('user 1'),
    new User('user 2'),
    new User('user 3'),
];
echo '<pre>';
print_r(array_column($users, 'username'));
?>

Kết quả

Array
(
    [0] => user 1
    [1] => user 2
    [2] => user 3
)

Ví dụ 3: sử dụng array_column để lấy Property Private qua hàm Magic __get trong một Object

<?php
class Person
{
    private $name;

    public function __construct(string $name)
    {
        $this->name = $name;
    }

    public function __get($prop)
    {
        return $this->$prop;
    }

    public function __isset($prop) : bool
    {
        return isset($this->$prop);
    }
}

$people = [
    new Person('Thành'),
    new Person('Nam'),
    new Person('Sơn'),
];
echo '<pre>';
print_r(array_column($people, 'name'));
?>

Kết quả

Array
(
    [0] => Thành
    [1] => Nam
    [2] => Sơn
)

Nếu __isset() không được sử dụng, thì một mảng trống sẽ được trả về.