Mẹo PHP: Sử dụng array_map với PHP Array phức tạp

Rate this post

Với một tình huống cần xử lý PHP array và thay thế hoặc thêm các thành phần mới cho mỗi item từ PHP Array, bạn sẽ làm như thế nào?

Trong bài này, ta sẽ cùng giải quyết một bài toán mà rất dễ gặp trong các project với CMS như WordPress. Đó là bạn cần truy cập vào một list array, thay thế hoặc thêm bớt các thành phần cho mỗi item.

Ví dụ với PHP Array

Hãy giả sử ta có một query dữ liệu như thế này nhé:

$args = array(
  'numberposts' => 3,
  'post_status' => 'publish',
  'post_type' => 'news'
);
$post_list = get_posts($args);
$list = array();

foreach($post_list as $item) {
  $list[] = array(
    'title' => $item->post_title,
    'description' => $item->post_excerpt
  );
}

Vấn đề xử lý dữ liệu

Tình huống lý tưởng là ta đang trong vòng lặp và có thể gọi thêm gì đó bạn muốn, ví dụ:

foreach($post_list as $item) {
  $list[] = array(
    'title' => $item->post_title,
    'description' => $item->post_excerpt,
    'image' => get_post_thumbnail_id($item->ID) // Đây là biến ta cho thêm vào
  );
}

Nhưng đời không như mơ…

Với tình huống vòng loop này không do chúng ta tạo ra, mà nó được thiết lập bởi một plugin khác. Khi đó bạn sẽ chỉ có thể xem kết quả là $list thì làm thế nào?

Kết quả xử lý

Khi đó, ta cần vận dụng kiến thức về PHP Array và sử dụng một trong các function có sẵn của PHP là array_map() một cách thông minh như sau:

$list = array_map( function($item) {
  $item['tag'] = __('News', 'codetot');
  $item['module'] = 'card-news'
}, $list);

Lưu ý là thao tác này phải thực hiện trước khi return $list nếu bạn đang ở trong function nhé.

Như vậy, kết quả khi bạn var_dump($list) sẽ chứa trong mỗi item cả tag và module như ví dụ ta vừa làm như trên.

Tài liệu tham khảo

PHP Array Map đơn giản

Sử dụng Array phức tạp với array_map

Viết một bình luận


Chuyên gia về Web
Bạn muốn làm việc với dịch vụ website do chúng tôi triển khai?
Gọi tư vấn 0982.90.4343
Chuyên gia về Web
Bài viết liên quan

07/04/2024

PHP: Format date dd/mm/yyyy và so sánh với Date hiện tại
Một vấn đề hay gặp trong quá trình xử lý PHP datetime là tình huống format date từ định dạng...

02/01/2024

Fix lỗi npm không thể cài các package devDependencies
Khi cài đặt dự án,  có lúc bạn sẽ cài mãi cũng không đủ các package npm, đặc biệt là...
Gọi file PHP trong WordPress

19/09/2023

Cài đặt và sử dụng WP-CLI trên môi trường Linux
Trên một số môi trường Hosting có thể cung cấp SSH hoặc Terminal access, song không có sẵn WP-CLI để...
Import database MySQL lớn trên môi trường Docker

06/08/2023

Import database MySQL lớn trên môi trường Docker
Mình sử dụng EasyPanel để quản lý các Docker và build môi trường app. Nay gặp tình huống phải import...