Tôi có một mảng như thế này:
$str= Array ( [No] => 101 [Paper_id] => WE3P-1 [Title] => "a1" [Author] => ABC [Aff_list] => "University of South Florida, Tampa, United States" [Abstracts] => "SLA" ) Array ( [No] => 101 [Paper_id] => WE3P-1 [Title] => "a2" [Author] => DEF [Aff_list] => "University of South Florida, Tampa, United States" [Abstracts] => "SLA " ) Array ( [No] => 104 [Paper_id] => TU5A-3 [Title] => "a3" [Author] => GHI [Aff_list] => "University of Alcala, Alcala de Henares, Spain" [Abstracts] => "Microwave" )Tôi muốn nhóm các phần tử trong mảng dựa trên 'không' là khóa chính. Đầu ra sẽ trông như thế này:
array(6) { ["No"]=> string(6) "101" ["Paper_id"]=> string(6) "WE3P-1" ["Title"]=> string(80) ""a-1" ["Author"]=> string(14) "ABC" ["Aff_list"]=> string(51) ""University of South Florida, Tampa, United States"" ["Abstracts"]=> string(5) ""(SLA)" " } array(6) { ["No"]=> string(3) "104" ["Paper_id"]=> string(6) "TU5A-3" ["Title"]=> string(40) "a2" ["Author"]=> string(20) "DEF" ["Aff_list"]=> string(48) ""University of Alcala, Alcala de Henares, Spain"" ["Abstracts"]=> string(9) ""Microwave" " }Lưu ý rằng giá trị của tác giả đã được sáp nhập liên quan đến khóa chính 'no'. có thể giúp tôi từ điều này, xin vui lòng?
Tôi đã thử làm điều này:
foreach($paper_info as $element) { foreach($element as $v) { $id = $element['No']; if (!isset($out[$id])) { $out[$id] = [ 'No' => $element['No'], 'Paper_id' => $element['Paper_id'], 'Title' => $element['Title'], 'Authors' => [], 'Aff_list' => $element['Aff_list'], 'Abstracts' => $element['Abstracts'] ]; } $out[$id]['Authors'][] = ['Authors' => $element['Author']]; } }(Php 5> = 5,4) array_group_by - Nhóm một mảng bằng một khóa nhất định. array|null array_group_by( array $array, mixed $key1 [, mixed $... ] ) Nhóm một mảng thành các mảng bằng một $key nhất định hoặc tập hợp các khóa, được chia sẻ giữa tất cả các thành viên mảng. Dựa trên chức năng ____99 của Jake Zatecky. Fork này cung cấp:array_group_by
array_group_by — Groups an array by a given key.Sự mô tả
- Tham số $key có thể là một đóng cửa
Thông số
array(6) { ["No"]=> string(6) "101" ["Paper_id"]=> string(6) "WE3P-1" ["Title"]=> string(80) ""a-1" ["Author"]=> string(14) "ABC" ["Aff_list"]=> string(51) ""University of South Florida, Tampa, United States"" ["Abstracts"]=> string(5) ""(SLA)" " } array(6) { ["No"]=> string(3) "104" ["Paper_id"]=> string(6) "TU5A-3" ["Title"]=> string(40) "a2" ["Author"]=> string(20) "DEF" ["Aff_list"]=> string(48) ""University of Alcala, Alcala de Henares, Spain"" ["Abstracts"]=> string(9) ""Microwave" " } 1 - Mảng để nhóm được thực hiện trên.
$key - Chìa khóa để nhóm hoặc tách bởi. Có thể là một chuỗi, một số nguyên, phao hoặc một cuộc gọi lại. Nếu khóa là null, phần tử lặp bị bỏ qua. Nếu khóa là một cuộc gọi lại, nó phải trả về một khóa hợp lệ từ mảng.
array(6) { ["No"]=> string(6) "101" ["Paper_id"]=> string(6) "WE3P-1" ["Title"]=> string(80) ""a-1" ["Author"]=> string(14) "ABC" ["Aff_list"]=> string(51) ""University of South Florida, Tampa, United States"" ["Abstracts"]=> string(5) ""(SLA)" " } array(6) { ["No"]=> string(3) "104" ["Paper_id"]=> string(6) "TU5A-3" ["Title"]=> string(40) "a2" ["Author"]=> string(20) "DEF" ["Aff_list"]=> string(48) ""University of Alcala, Alcala de Henares, Spain"" ["Abstracts"]=> string(9) ""Microwave" " } 3
array(6) { ["No"]=> string(6) "101" ["Paper_id"]=> string(6) "WE3P-1" ["Title"]=> string(80) ""a-1" ["Author"]=> string(14) "ABC" ["Aff_list"]=> string(51) ""University of South Florida, Tampa, United States"" ["Abstracts"]=> string(5) ""(SLA)" " } array(6) { ["No"]=> string(3) "104" ["Paper_id"]=> string(6) "TU5A-3" ["Title"]=> string(40) "a2" ["Author"]=> string(20) "DEF" ["Aff_list"]=> string(48) ""University of Alcala, Alcala de Henares, Spain"" ["Abstracts"]=> string(9) ""Microwave" " } 4-Các khóa bổ sung để nhóm bộ các khớp con tiếp theo.
Trả về giá trị
Trả về một mảng đa chiều, với mỗi chiều chứa các phần tử được nhóm theo (các) phím được truyền.
Errors/Exceptions
Nếu $key không phải là một trong những loại được chấp nhận array(6) { ["No"]=> string(6) "101" ["Paper_id"]=> string(6) "WE3P-1" ["Title"]=> string(80) ""a-1" ["Author"]=> string(14) "ABC" ["Aff_list"]=> string(51) ""University of South Florida, Tampa, United States"" ["Abstracts"]=> string(5) ""(SLA)" " } array(6) { ["No"]=> string(3) "104" ["Paper_id"]=> string(6) "TU5A-3" ["Title"]=> string(40) "a2" ["Author"]=> string(20) "DEF" ["Aff_list"]=> string(48) ""University of Alcala, Alcala de Henares, Spain"" ["Abstracts"]=> string(9) ""Microwave" " } 6 sẽ bị ném và array(6) { ["No"]=> string(6) "101" ["Paper_id"]=> string(6) "WE3P-1" ["Title"]=> string(80) ""a-1" ["Author"]=> string(14) "ABC" ["Aff_list"]=> string(51) ""University of South Florida, Tampa, United States"" ["Abstracts"]=> string(5) ""(SLA)" " } array(6) { ["No"]=> string(3) "104" ["Paper_id"]=> string(6) "TU5A-3" ["Title"]=> string(40) "a2" ["Author"]=> string(20) "DEF" ["Aff_list"]=> string(48) ""University of Alcala, Alcala de Henares, Spain"" ["Abstracts"]=> string(9) ""Microwave" " } 7 được trả về.
Ví dụ
Ví dụ #1 mảng_group_by () ví dụ
$records = [ [ "state" => "IN", "city" => "Indianapolis", "object" => "School bus" ], [ "state" => "IN", "city" => "Indianapolis", "object" => "Manhole" ], [ "state" => "IN", "city" => "Plainfield", "object" => "Basketball" ], [ "state" => "CA", "city" => "San Diego", "object" => "Light bulb" ], [ "state" => "CA", "city" => "Mountain View", "object" => "Space pen" ] ]; $grouped = array_group_by( $records, "state", "city" );
Ví dụ trên sẽ xuất ra:
Array ( [IN] => Array ( [Indianapolis] => Array ( [0] => Array ( [state] => IN [city] => Indianapolis [object] => School bus ) [1] => Array ( [state] => IN [city] => Indianapolis [object] => Manhole ) ) [Plainfield] => Array ( [0] => Array ( [state] => IN [city] => Plainfield [object] => Basketball ) ) ) [CA] => Array ( [San Diego] => Array ( [0] => Array ( [state] => CA [city] => San Diego [object] => Light bulb ) ) [Mountain View] => Array ( [0] => Array ( [state] => CA [city] => Mountain View [object] => Space pen ) ) ) )Cài đặt
Với nhà soạn nhạc
$ composer require mcaskill/php-array-group-byKhông có nhà soạn nhạc
Tại sao bạn không sử dụng nhà soạn nhạc? Tải xuống array(6) { ["No"]=> string(6) "101" ["Paper_id"]=> string(6) "WE3P-1" ["Title"]=> string(80) ""a-1" ["Author"]=> string(14) "ABC" ["Aff_list"]=> string(51) ""University of South Florida, Tampa, United States"" ["Abstracts"]=> string(5) ""(SLA)" " } array(6) { ["No"]=> string(3) "104" ["Paper_id"]=> string(6) "TU5A-3" ["Title"]=> string(40) "a2" ["Author"]=> string(20) "DEF" ["Aff_list"]=> string(48) ""University of Alcala, Alcala de Henares, Spain"" ["Abstracts"]=> string(9) ""Microwave" " } 8 từ ý chính và lưu tệp vào đường dẫn dự án của bạn ở đâu đó.