Hướng dẫn group by key array in php - nhóm theo mảng khóa trong php

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']];
    }
}

array_group_by

(Php 5> = 5,4) array_group_by - Nhóm một mảng bằng một khóa nhất định.
array_group_by — Groups an array by a given key.

Sự mô tả

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:

  • 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-by

Khô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 đó.

Làm thế nào để nhóm mảng trong PHP?

Nhóm và các hoạt động SUM có thể được tích hợp vào danh sách dữ liệu ở cấp mã trong PHP.Sử dụng hàm pHP mảng_Reduce () để nhóm theo và tổng các giá trị của một mảng trong PHP.Use the PHP array_reduce() function to GROUP BY and SUM values of an array in PHP.

Array_Keys () được sử dụng trong PHP là gì?

Array_Keys () là một hàm tích hợp trong PHP và được sử dụng để trả về tất cả các khóa và mảng hoặc tập hợp con của các khóa.Tham số: Hàm lấy ba tham số trong đó một tham số là bắt buộc và hai tham số khác là tùy chọn.to return either all the keys of and array or the subset of the keys. Parameters: The function takes three parameters out of which one is mandatory and other two are optional.

Làm thế nào để bạn nhóm một mảng?

Các bước để tạo hàm GroupBy, tạo một đối tượng làm giá trị ban đầu cho đối tượng kết quả của chúng tôi.Bên trong mảng giảm, tạo một mảng cho từng giá trị khóa riêng biệt và đẩy ravalue nếu giá trị khóa có trong currentValue.

Làm thế nào để bạn tổng hợp các giá trị của một mảng có cùng một khóa trong PHP?

Để tổng hợp các giá trị của một khóa cụ thể (chẳng hạn như Qty) trong mảng, bạn có thể sử dụng bất kỳ khóa nào sau:..
vòng lặp foreach ;.
Array_Sum () và Array_Column ().
mảng_sum () và mảng_map ();
Array_Reduce () ..