Home > PHP > PHP cách sắp xếp lại mảng theo một nhóm giá trị con

PHP cách sắp xếp lại mảng theo một nhóm giá trị con

Với bất cứ ngôn ngữ nào các bài toàn về mảng trong lập trình, hâu như luôn luôn hiện diện trong mỗi dự án, mỗi ngày, giờ làm việc. Hôm nay nhantam giới thiệu thuật toán sắp xếp lại mạng theo tiêu chí: nhóm mảng theo một giá trị con trong mảng. Cách dùng câu chữ tiếng Việt có đôi khi các bạn hiều nhầm, nhantam tạm viết thêm dòng tiếng Anh (php group array by sub array value) Chúng ta có mảng sau: Ví dụ:


Array
(
[0] => Array
(
 [product_id] => 1
 [category_id] => 1
 [category_name] => Category 1
 [product_name] => San pham 1
)

[1] => Array
(
 [product_id] => 2
 [category_id] => 1
 [category_name] => Category 1
 [product_name] => San pham 2
)

[2] => Array
(
 [product_id] => 3
 [category_id] => 2
 [category_name] => Category 2
 [product_name] => San pham 3
)

[3] => Array
(
 [product_id] => 4
 [category_id] => 2
 [category_name] => Category 2
 [product_name] => San pham 4
)

[4] => Array
(
 [product_id] => 5
 [category_id] => 2
 [category_name] => Category 2
 [product_name] => San pham 5
)
)

Bài toán yêu cầu:  chúng ta sắp xếp lại mảng nhóm theo category_id, một cách tiệm kiệm bộ nhớ nhất cho server (nếu chạy 2 vòng lập thì cách sắp xếp quá đơn giản với tất cả các lập trình viên), nhưng làm thế nào chạy một vòng lặp để giải quyết yêu cầu trên – theo tiêu chí tiết kiệm bộ nhớ cho server khi xử lý yêu cầu ? Chắc hẳn các bạn có sẽ có rất nhiều cách, ở đây nhantam xin giới thiệu thuật toán 1 vòng lặp giải quyết yêu cầu trên:


$arr = array ();
foreach(rolePerms as key => item) {
  $var_id = item['category_id'];
  $arr[$var_id]['category_id'] = item['category_name'];
  $arr[$var_id]['group'][] = item;
}

Kết quả sau khi sắp xếp ở trên như sau: //output


Array
(
[1] => Array
(
 [category_name] => Category 1
 [group] => Array
 (
 [0] => Array
 (
  [product_id] => 1
  [category_id] => 1
  [category_name] => Category 1
  [product_name] => San pham 1
)

 [1] => Array
 (
   [product_id] => 2
   [category_id] => 1
   [category_name] => Category 1
   [product_name] => San pham 2
 )
)

)

[2] => Array
(
 [category_name] => Category 1
 [group] => Array
 (
  [0] => Array
  (
    [product_id] => 3
    [category_id] => 2
    [category_name] => Category 2
    [product_name] => San pham 3
  )

 [1] => Array
 (
   [product_id] => 4
   [category_id] => 2
   [category_name] => Category 3
   [product_name] => San pham 4
 )
 [2] => Array
 (
  [product_id] => 5
  [category_id] => 2
  [category_name] => Category 3
  [product_name] => San pham 5
 )
)

)
)

Chúc các bạn thành công

nhantam
PHP Developer
thiết kế web

Advertisements
  1. No comments yet.
  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: