Hướng dẫn group array by key value php - nhóm mảng theo giá trị khóa 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 theo giá trị 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. to GROUP BY and SUM values of an array in PHP.

KSORT PHP là gì?

Hàm ksort () sắp xếp một mảng kết hợp theo thứ tự tăng dần, theo khóa.Mẹo: Sử dụng hàm krsort () để sắp xếp một mảng kết hợp theo thứ tự giảm dần, theo khóa.Mẹo: Sử dụng hàm orort () để sắp xếp một mảng kết hợp theo thứ tự tăng dần, theo giá trị.sorts an associative array in ascending order, according to the key. Tip: Use the krsort() function to sort an associative array in descending order, according to the key. Tip: Use the asort() function to sort an associative array in ascending order, according to the value.