Hướng dẫn php group multidimensional array by key - nhóm php mảng đa chiều theo phím

33

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.

Tôi có một mảng đa chiều và đang cố gắng nhóm chúng theo giá trị trong một cột cụ thể.

Tôi đang cố gắng nhóm chúng theo

Array (

   [1] => Array (
          [0] => Array (
                    [cust] => XT8900
                    [type] => standard
                    )
          [1] => Array (
                    [cust] => XT8944
                    [type] => standard
                    )
          )

   [3] => Array (
          [2] => Array (
                 [cust] => XT8922
                 [type] => premier
                 )

          [3] => Array (
                 [cust] => XT8816
                 [type] => permier
                 )
          )

   [7] => Array (
          [4] => Array (
                 [cust] => XT7434
                 [type] => standard
                 )
          )
)
5, nhưng tôi sẽ không thực sự biết mức độ trước đó. Vì vậy, nó không giống như tôi có thể đặt nó vào vòng lặp
Array (

   [1] => Array (
          [0] => Array (
                    [cust] => XT8900
                    [type] => standard
                    )
          [1] => Array (
                    [cust] => XT8944
                    [type] => standard
                    )
          )

   [3] => Array (
          [2] => Array (
                 [cust] => XT8922
                 [type] => premier
                 )

          [3] => Array (
                 [cust] => XT8816
                 [type] => permier
                 )
          )

   [7] => Array (
          [4] => Array (
                 [cust] => XT7434
                 [type] => standard
                 )
          )
)
6 và nói
Array (

   [1] => Array (
          [0] => Array (
                    [cust] => XT8900
                    [type] => standard
                    )
          [1] => Array (
                    [cust] => XT8944
                    [type] => standard
                    )
          )

   [3] => Array (
          [2] => Array (
                 [cust] => XT8922
                 [type] => premier
                 )

          [3] => Array (
                 [cust] => XT8816
                 [type] => permier
                 )
          )

   [7] => Array (
          [4] => Array (
                 [cust] => XT7434
                 [type] => standard
                 )
          )
)
7, bởi vì tôi sẽ không biết rằng
Array (

   [1] => Array (
          [0] => Array (
                    [cust] => XT8900
                    [type] => standard
                    )
          [1] => Array (
                    [cust] => XT8944
                    [type] => standard
                    )
          )

   [3] => Array (
          [2] => Array (
                 [cust] => XT8922
                 [type] => premier
                 )

          [3] => Array (
                 [cust] => XT8816
                 [type] => permier
                 )
          )

   [7] => Array (
          [4] => Array (
                 [cust] => XT7434
                 [type] => standard
                 )
          )
)
8 là giá trị tối đa cho khóa cấp độ, và thẳng thắn, tôi không chắc đó là cách tôi cần phải làm điều đó Ngay cả khi tôi đã làm ...

Array (
   [0] => Array (
          [cust] => XT8900
          [type] => standard
          [level] => 1
          )
   [1] => Array (
          [cust] => XT8944
          [type] => standard
          [level] => 1
          )
   [2] => Array (
          [cust] => XT8922
          [type] => premier
          [level] => 3
          )
   [3] => Array (
          [cust] => XT8816
          [type] => permier
          [level] => 3
          )
   [4] => Array (
          [cust] => XT7434
          [type] => standard
          [level] => 7
          )
)

Những gì tôi đang hy vọng sản xuất:

Array (

   [1] => Array (
          [0] => Array (
                    [cust] => XT8900
                    [type] => standard
                    )
          [1] => Array (
                    [cust] => XT8944
                    [type] => standard
                    )
          )

   [3] => Array (
          [2] => Array (
                 [cust] => XT8922
                 [type] => premier
                 )

          [3] => Array (
                 [cust] => XT8816
                 [type] => permier
                 )
          )

   [7] => Array (
          [4] => Array (
                 [cust] => XT7434
                 [type] => standard
                 )
          )
)

Hướng dẫn php group multidimensional array by key - nhóm php mảng đa chiều theo phím

Mickmackusa

39.2k11 Huy hiệu vàng76 Huy hiệu bạc115 Huy hiệu đồng11 gold badges76 silver badges115 bronze badges

hỏi ngày 3 tháng 2 năm 2010 lúc 4:09Feb 3, 2010 at 4:09

2

Cách tốt nhất, nếu bạn có quyền kiểm soát việc xây dựng mảng ban đầu, chỉ cần thiết lập mọi thứ như thế khi bắt đầu khi bạn thêm các mục.

Nếu không thì hãy xây dựng một mảng tạm thời để sắp xếp:

foreach ($input_arr as $key => &$entry) {
    $level_arr[$entry['level']][$key] = $entry;
}

Để lại cho bạn hình thức bạn muốn và mọi thứ được tham chiếu cùng nhau.

Xây dựng mảng như thế ngay từ đầu mặc dù nếu có thể.

Đã trả lời ngày 3 tháng 2 năm 2010 lúc 5:33Feb 3, 2010 at 5:33

MikemikeMike

2.4151 Huy hiệu vàng18 Huy hiệu bạc9 Huy hiệu đồng1 gold badge18 silver badges9 bronze badges

Bạn cần nhóm chúng theo cấp độ trước tiênlevel first

Sử dụng foreach để lặp vào kiểm tra mảng nếu mức có giống với mục trước đó nhóm nó với mảng đó khôngforeach to loop into array check if the level is the same with the previous item then group it with that array

  $templevel=0;   

  $newkey=0;

  $grouparr[$templevel]="";

  foreach ($items as $key => $val) {
   if ($templevel==$val['level']){
     $grouparr[$templevel][$newkey]=$val;
   } else {
     $grouparr[$val['level']][$newkey]=$val;
   }
     $newkey++;       
  }
print($grouparr);

Đầu ra của in ($ grouparr); sẽ hiển thị như định dạng bạn hy vọngprint($grouparr); will display like the format you hoped for

Bạn cũng có thể cố gắng

print($grouparr[7]);

Sẽ hiển thị

 [7] => Array (
      [4] => Array (
             [cust] => XT7434
             [type] => standard
             )
      )

Hoặc

print($grouparr[3]);

Sẽ hiển thị

[3] => Array (
      [2] => Array (
             [cust] => XT8922
             [type] => premier
             )

      [3] => Array (
             [cust] => XT8816
             [type] => permier
             )
      )

HoặcFeb 3, 2010 at 5:27

Hướng dẫn php group multidimensional array by key - nhóm php mảng đa chiều theo phím

1

Đã trả lời ngày 3 tháng 2 năm 2010 lúc 5:27

function arraySort($input,$sortkey){
  foreach ($input as $key=>$val) $output[$val[$sortkey]][]=$val;
  return $output;
}

Dưới đây là giải pháp tôi đưa ra cho một vấn đề giống hệt nhau, được bao bọc như một chức năng:

$myArray = arraySort($myArray,'level');

Để sắp xếp $ MyArray theo khóa có tên "Cấp", hãy làm điều này:

Array (

   [1] => Array (
          [0] => Array (
                    [cust] => XT8900
                    [type] => standard
                    )
          [1] => Array (
                    [cust] => XT8944
                    [type] => standard
                    )
          )

   [3] => Array (
          [2] => Array (
                 [cust] => XT8922
                 [type] => premier
                 )

          [3] => Array (
                 [cust] => XT8816
                 [type] => permier
                 )
          )

   [7] => Array (
          [4] => Array (
                 [cust] => XT7434
                 [type] => standard
                 )
          )
)
0

Hoặc nếu bạn không muốn nó là một chức năng, chỉ để sử dụng một lần, điều này sẽ tạo ra $ mynewarray từ $ myarray được nhóm bởi khóa 'cấp' khóa 'Mar 15, 2012 at 14:54

2

Array (

   [1] => Array (
          [0] => Array (
                    [cust] => XT8900
                    [type] => standard
                    )
          [1] => Array (
                    [cust] => XT8944
                    [type] => standard
                    )
          )

   [3] => Array (
          [2] => Array (
                 [cust] => XT8922
                 [type] => premier
                 )

          [3] => Array (
                 [cust] => XT8816
                 [type] => permier
                 )
          )

   [7] => Array (
          [4] => Array (
                 [cust] => XT7434
                 [type] => standard
                 )
          )
)
1

Đã trả lời ngày 15 tháng 3 năm 2012 lúc 14:54Aug 27, 2012 at 15:09

Đã trả lời ngày 27 tháng 8 năm 2012 lúc 15:09Farzher

Farzherfarzher20 gold badges63 silver badges97 bronze badges

1

13.1K20 Huy hiệu vàng63 Huy hiệu bạc97 Huy hiệu Đồng

Array (

   [1] => Array (
          [0] => Array (
                    [cust] => XT8900
                    [type] => standard
                    )
          [1] => Array (
                    [cust] => XT8944
                    [type] => standard
                    )
          )

   [3] => Array (
          [2] => Array (
                 [cust] => XT8922
                 [type] => premier
                 )

          [3] => Array (
                 [cust] => XT8816
                 [type] => permier
                 )
          )

   [7] => Array (
          [4] => Array (
                 [cust] => XT7434
                 [type] => standard
                 )
          )
)
2

Ans tốt nhất.Dec 18, 2018 at 7:25

1

Array (

   [1] => Array (
          [0] => Array (
                    [cust] => XT8900
                    [type] => standard
                    )
          [1] => Array (
                    [cust] => XT8944
                    [type] => standard
                    )
          )

   [3] => Array (
          [2] => Array (
                 [cust] => XT8922
                 [type] => premier
                 )

          [3] => Array (
                 [cust] => XT8816
                 [type] => permier
                 )
          )

   [7] => Array (
          [4] => Array (
                 [cust] => XT7434
                 [type] => standard
                 )
          )
)
3

Đã trả lời ngày 18 tháng 12 năm 2018 lúc 7:25Oct 18, 2014 at 6:13

1

Array (

   [1] => Array (
          [0] => Array (
                    [cust] => XT8900
                    [type] => standard
                    )
          [1] => Array (
                    [cust] => XT8944
                    [type] => standard
                    )
          )

   [3] => Array (
          [2] => Array (
                 [cust] => XT8922
                 [type] => premier
                 )

          [3] => Array (
                 [cust] => XT8816
                 [type] => permier
                 )
          )

   [7] => Array (
          [4] => Array (
                 [cust] => XT7434
                 [type] => standard
                 )
          )
)
4

Hướng dẫn php group multidimensional array by key - nhóm php mảng đa chiều theo phím

Đã trả lời ngày 18 tháng 10 năm 2014 lúc 6:13

Ketan42 gold badges60 silver badges92 bronze badges

18.7K42 Huy hiệu vàng60 Huy hiệu bạc92 Huy hiệu ĐồngMay 28, 2016 at 10:02

1