Hàm array_column() trong PHP
Trần Thị Vân
- 1192
- 02/08/2025
Chức năng của Hàm array_column() trong PHP
Hàm array_column() trong PHP dùng để lấy giá trị của 1 hoặc 2 cột trong mảng đa chiều hoặc một mảng chứa các đối tượng để tạo ra một mảng mới, nếu lấy 1 cột thì giá trị của cột được lấy sẽ được thêm vào cột giá trị của mảng mới, các khóa (key) trong mảng mới được tạo lại từ đầu, nếu lấy 2 cột thì cột để trước trong hàm array_column() sẽ làm cột giá trị trong mảng mới, cột để sau cột kia trong hàm array_column() sẽ làm cột Khóa (Key) trong mảng mới.
Cú pháp của Hàm array_column() trong PHP
$mảng_mới = array_column($mảng_gốc,"tên_cột");
$mảng_gốc: Mảng gốc.
tên_cột: Tên cột trong mảng cần lấy giá trị, cột này sẽ được thêm vào cột giá trị của mảng mới
$mảng_mới: Lấy giá trị của cột từ mảng kia thêm vào cột giá trị và tạo lại khóa (key).
$mảng_mới = array_column($mảng_gốc,"tên_cột1","tên_cột2");
$mảng_gốc: Mảng gốc.
tên_cột1: Tên cột 1 sẽ được thêm vào cột giá trị trong mảng mới.
tên_cột2: Tên cột 2 sẽ được thêm vào cột Khóa (Key) trong mảng mới.
$mảng_mới: Lấy tên_cột1 từ mảng kia về làm cột giá trị, và lấy tên_cột2 từ mảng kia về làm cột Khóa (Key).
Code Hàm array_column() trong PHP
Hàm array_column() lấy giá trị 1 cột trong PHP
Giá trị của cột được lấy sẽ được thêm vào cột giá trị của mảng mới, các khóa (key) trong mảng mới được tạo lại từ đầu:
<?php
$manggoc = array(
array("id"=>"1","ten"=>"Vân","tuoi"=>"29","gioitinh"=>"Nữ"),
array("id"=>"2","ten"=>"Lực","tuoi"=>"35","gioitinh"=>"Nam"),
array("id"=>"3","ten"=>"Quỳnh","tuoi"=>"1","gioitinh"=>"Nữ")
);
?>
<h2>Hàm array_column() lấy giá trị cột "ten"</h2>
<?php
$mangmoi = array_column($manggoc,"ten"); // Kết quả: Array ( [0] => Vân [1] => Lực [2] => Quỳnh )
print_r($mangmoi);
?>
<h2>Hàm array_column() lấy giá trị cột "tuoi"</h2>
<?php
$mangmoi = array_column($manggoc,"tuoi"); // Kết quả: Array ( [0] => 29 [1] => 35 [2] => 1 )
print_r($mangmoi);
?>
<h2>Hàm array_column() lấy giá trị cột "gioitinh"</h2>
<?php
$mangmoi = array_column($manggoc,"gioitinh"); // Kết quả: Array ( [0] => Nữ [1] => Nam [2] => Nữ )
print_r($mangmoi);
?>
Kết quả:
/////Hàm array_column() lấy giá trị cột "ten"
Array ( [0] => Vân [1] => Lực [2] => Quỳnh )
/////Hàm array_column() lấy giá trị cột "tuoi"
Array ( [0] => 29 [1] => 35 [2] => 1 )
/////Hàm array_column() lấy giá trị cột "gioitinh"
Array ( [0] => Nữ [1] => Nam [2] => Nữ )
Hàm array_column() lấy giá trị của 2 cột trong PHP
Cột để trước trong hàm array_column() sẽ làm cột giá trị trong mảng mới, cột để sau cột kia trong hàm array_column() sẽ làm cột Khóa (Key) trong mảng mới:
<?php
$manggoc = array(
array("id"=>"4","ten"=>"Vân","tuoi"=>"29","gioitinh"=>"Nữ"),
array("id"=>"5","ten"=>"Lực","tuoi"=>"35","gioitinh"=>"Nam"),
array("id"=>"6","ten"=>"Quỳnh","tuoi"=>"1","gioitinh"=>"Nữ")
);
?>
<h2>Hàm array_column() lấy cột "ten" làm cột giá trị, và cột id làm cột Khóa (Key)</h2>
<?php
$mangmoi = array_column($manggoc,"ten","id"); // Kết quả: Array ( [4] => Vân [5] => Lực [6] => Quỳnh )
print_r($mangmoi);
?>
<h2>Hàm array_column() lấy cột "ten" làm cột Khóa (Key), và cột id làm cột giá trị</h2>
<?php
$mangmoi = array_column($manggoc,"id","ten"); // Kết quả: Array ( [Vân] => 4 [Lực] => 5 [Quỳnh] => 6 )
print_r($mangmoi);
?>
Kết quả:
/////Hàm array_column() lấy cột "ten" làm cột giá trị, và cột id làm cột Khóa (Key)
Array ( [4] => Vân [5] => Lực [6] => Quỳnh )
/////Hàm array_column() lấy cột "ten" làm cột Khóa (Key), và cột id làm cột giá trị
Array ( [Vân] => 4 [Lực] => 5 [Quỳnh] => 6 )
Cách sử dụng hàm array_column() hiệu quả trong PHP
Không chỉ dùng để lấy một cột dữ liệu, array_column() còn hữu ích khi cần tổ chức lại dữ liệu từ một mảng nhiều phần tử. Việc hiểu rõ cách kết hợp các tham số sẽ giúp mã PHP ngắn gọn hơn, đặc biệt khi xử lý danh sách người dùng, sản phẩm hoặc dữ liệu lấy từ cơ sở dữ liệu.
Lấy nhiều cột dữ liệu từ mảng bằng array_column()
array_column() được thiết kế để lấy giá trị của một cột trong mỗi phần tử của mảng. Vì vậy, nếu cần lấy đồng thời nhiều cột, cách phù hợp là thực hiện hàm cho từng cột cần sử dụng.
Ví dụ, từ danh sách người dùng, bạn có thể lấy riêng tên và email:
<?php
$users = [
['id' => 1, 'ten' => 'Nguyen Van A', 'email' => 'a@example.com'],
['id' => 2, 'ten' => 'Tran Van B', 'email' => 'b@example.com']
];
$names = array_column($users, 'ten');
$emails = array_column($users, 'email');
print_r($names);
print_r($emails);
?>
Cách này phù hợp khi mỗi cột được sử dụng cho một mục đích riêng. Thay vì duyệt toàn bộ mảng bằng nhiều vòng foreach, bạn có thể lấy nhanh phần dữ liệu cần thiết bằng cú pháp ngắn gọn.
Sử dụng array_column() để tạo mảng theo một cột làm khóa
Một điểm mạnh đáng chú ý của array_column() là tham số thứ ba cho phép chọn một cột làm khóa cho mảng kết quả. Điều này rất tiện khi cần tra cứu dữ liệu theo mã hoặc ID.
<?php
$products = [
['id' => 101, 'name' => 'Laptop', 'price' => 15000000],
['id' => 102, 'name' => 'Keyboard', 'price' => 800000],
['id' => 103, 'name' => 'Mouse', 'price' => 400000]
];
$result = array_column($products, 'name', 'id');
print_r($result);
?>
Kết quả sẽ có id làm khóa và tên sản phẩm làm giá trị. Nhờ đó, việc lấy tên sản phẩm theo ID trở nên trực tiếp hơn thay vì phải duyệt từng phần tử để tìm kiếm.
Cách sử dụng này đặc biệt hữu ích khi dữ liệu cần được chuyển thành dạng ánh xạ như ID => tên, mã => giá trị hoặc các cấu trúc tương tự.
Xử lý phần tử không tồn tại khi dùng array_column()
Trong dữ liệu thực tế, không phải phần tử nào cũng chắc chắn có cùng một khóa. Khi cột được yêu cầu không tồn tại ở một số phần tử, array_column() sẽ không tạo ra giá trị tương ứng cho phần tử đó.
<?php
$users = [
['id' => 1, 'ten' => 'Nguyen Van A'],
['id' => 2],
['id' => 3, 'ten' => 'Le Van C']
];
$names = array_column($users, 'ten');
print_r($names);
?>
Vì vậy, trước khi sử dụng kết quả cho các thao tác tiếp theo, nên xác định dữ liệu đầu vào có đồng nhất hay không. Nếu cột có thể bị thiếu, cần thiết kế bước xử lý phù hợp thay vì mặc định rằng mọi phần tử đều chứa cùng một khóa.
Đặc biệt, khi sử dụng cột làm khóa bằng tham số thứ ba, nên kiểm tra tính duy nhất của giá trị khóa. Nếu nhiều phần tử có cùng khóa, dữ liệu có thể bị ghi đè trong mảng kết quả.
Lời kết
Cảm ơn các bạn đã tham khảo bài viết Hàm array_column() trong PHP.
- 0 Bình luận
Email, Điện thoại của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *