Sắp xếp mảng PHP theo giá trị khóa

Trong bài viết này, chúng tôi sẽ đề cập đến một vấn đề phổ biến. cách sắp xếp một mảng các mảng theo giá trị của một khóa đã cho bằng PHP

Dưới đây, bạn có thể tìm thấy các phương pháp hữu ích nhất với các ví dụ của chúng

Hãy xem cách sử dụng hàm array_multisort()

 'pork', 'price' => 5.43 ], 
	['type' => 'milk', 'price' => 2.9 ], 
	['type' => 'fruit', 'price' => 3.5] 
];

$price = [];

foreach ($inventory as $key => $row) {
  $price[$key] = $row['price'];
}
array_multisort($price, SORT_DESC, $inventory);

var_dump($inventory);

?>

Trong PHP5. 5 trở lên, có thể sử dụng array_column() thay cho foreach

Đây là cách để làm điều đó

 'pork', 'price' => 5.43 ], 
	['type' => 'milk', 'price' => 2.9 ], 
	['type' => 'fruit', 'price' => 3.5] 
];

$price = array_column($inventory, 'price');

array_multisort($price, SORT_DESC, $inventory);

var_dump($inventory);

?>

Một tùy chọn khác là sử dụng chức năng so sánh tùy chỉnh. Đó là một giải pháp khá nhanh chóng và tiện dụng cho vấn đề

Đây là ví dụ

 'pork', 'price' => 5.43 ], 
	['type' => 'milk', 'price' => 2.9 ], 
	['type' => 'fruit', 'price' => 3.5] 
];

function invenDescSort($item1, $item2)
{
  if ($item1['price'] == $item2['price']) {
    return 0;
  }
  return $item1['price'] < $item2['price'] ? 1 : -1;
}

usort($inventory, 'invenDescSort');


var_dump($inventory);

?>

Nó sẽ sản xuất

array(3) {
  [0] =>
  array(2) {
    'type' =>
    string(4) "pork"
    'price' =>
    double(5.43)
  }
  [1] =>
  array(2) {
    'type' =>
    string(5) "fruit"
    'price' =>
    double(3.5)
  }
  [2] =>
  array(2) {
    'type' =>
    string(4) "milk"
    'price' =>
    double(2.9)
  }
}

Trong hướng dẫn này, chúng tôi đã trình bày hai phương pháp sắp xếp một mảng các mảng theo giá trị của một khóa đã cho bằng PHP

Tuy nhiên, có những giải pháp khả thi khác cho vấn đề. Bạn có thể tìm thêm thông tin và tùy chọn trên trang này

Khi bạn cố gắng sử dụng các hàm

 'II','four' => 'IV', 'three' => 'III', 'one' => 'I'];
  asort($a);
  print_r($a);

/* Prints
Array
(
    [one] => I
    [two] => II
    [three] => III
    [four] => IV
)
*/
6 hoặc
 'II','four' => 'IV', 'three' => 'III', 'one' => 'I'];
  asort($a);
  print_r($a);

/* Prints
Array
(
    [one] => I
    [two] => II
    [three] => III
    [four] => IV
)
*/
7 với một mảng kết hợp, nó hoạt động nhưng sau đó tất cả các phím đều bị mất. Để giữ nguyên liên kết khóa-giá trị, bạn phải sử dụng một trong các chức năng sắp xếp sau


Các hàm này luôn trả về

"kk", "e"=>"zz", "z"=>"hh", "a"=>"rr");
 asort($map);
 print_r($map);
2. Các hàm này chủ yếu hữu ích cho các mảng kết hợp và chấp nhận hai tham số

  1. mảng làm đầu vào
  2. (tùy chọn) để sửa đổi hành vi sắp xếp

"kk", "e"=>"zz", "z"=>"hh", "a"=>"rr"); asort($map); print_r($map);3 Sắp xếp các mảng kết hợp theo các giá trị theo thứ tự tăng dần

 'II','four' => 'IV', 'three' => 'III', 'one' => 'I'];
  asort($a);
  print_r($a);

/* Prints
Array
(
    [one] => I
    [two] => II
    [three] => III
    [four] => IV
)
*/

Giống như

"kk", "e"=>"zz", "z"=>"hh", "a"=>"rr");
 asort($map);
 print_r($map);
4 hàm này sắp xếp lại các phần tử trong mảng chủ đề từ thấp nhất đến cao nhất. Ví dụ sau đây cho thấy một mảng đơn giản được sắp xếp theo
"kk", "e"=>"zz", "z"=>"hh", "a"=>"rr");
 asort($map);
 print_r($map);
5

"kk", "e"=>"zz", "z"=>"hh", "a"=>"rr");
 asort($map);
 print_r($map);

Hàm

"kk", "e"=>"zz", "z"=>"hh", "a"=>"rr");
 asort($map);
 print_r($map);
6 xuất ra cấu trúc của mảng đã sắp xếp

Array ( [z] => hh
        [o] => kk
        [a] => rr
        [e] => zz )

Khi

"kk", "e"=>"zz", "z"=>"hh", "a"=>"rr");
 asort($map);
 print_r($map);
7 và
"kk", "e"=>"zz", "z"=>"hh", "a"=>"rr");
 asort($map);
 print_r($map);
8 được sử dụng trên các mảng không liên kết, thứ tự của các phần tử được sắp xếp theo thứ tự đã sắp xếp, nhưng các chỉ mục truy cập các phần tử không thay đổi. Điều này có vẻ hơi lạ; . Ví dụ sau đây cho thấy điều gì đang xảy ra

kết quả này

Array ( [2] => 3
        [5] => 8
        [3] => 16
        [1] => 19
        [0] => 24
        [4] => 56
        [6] => 171 )

"kk", "e"=>"zz", "z"=>"hh", "a"=>"rr"); asort($map); print_r($map);9 Sắp xếp các mảng kết hợp theo giá trị theo thứ tự giảm dần

 'II','four' => 'IV', 'three' => 'III', 'one' => 'I'];
  arsort($a);
  print_r($a);

/* Prints
Array
(
    [four] => IV
    [three] => III
    [two] => II
    [one] => I
)
*/

Giống như

Array ( [z] => hh
        [o] => kk
        [a] => rr
        [e] => zz )
0 hàm này sắp xếp lại các phần tử trong mảng chủ đề từ cao nhất xuống thấp nhất. Ví dụ sau đây cho thấy một mảng đơn giản được sắp xếp theo
"kk", "e"=>"zz", "z"=>"hh", "a"=>"rr");
 asort($map);
 print_r($map);
8

"kk", "e"=>"zz", "z"=>"hh", "a"=>"rr");
 arsort($map);
 print_r($map);
 
 /* Prints
 Array
(
    [e] => zz
    [a] => rr
    [o] => kk
    [z] => hh
)
 */

Sắp xếp các mảng kết hợp theo thứ tự bảng chữ cái

24, 'nt'=>19, 'te'=>3, 'sn'=>16,
       'fs'=>56, 'et'=>8, 'oso'=>171];
 asort($a);
 print_r($a);

Đầu ra của ví dụ cho thấy kết quả

//Numerically sorted
Array
(
    [te] => 3
    [et] => 8
    [sn] => 16
    [nt] => 19
    [tf] => 24
    [fs] => 56
    [oso] => 171
)

Theo mặc định, PHP sắp xếp các chuỗi theo thứ tự bảng chữ cái và các giá trị số theo thứ tự số. Một tham số tùy chọn,

Array ( [z] => hh
        [o] => kk
        [a] => rr
        [e] => zz )
2, có thể được truyền để buộc hành vi sắp xếp chuỗi hoặc số. Trong ví dụ sau, hằng số PHP
Array ( [z] => hh
        [o] => kk
        [a] => rr
        [e] => zz )
3 sắp xếp các số như thể chúng là các chuỗi

 'II','four' => 'IV', 'three' => 'III', 'one' => 'I'];
  asort($a);
  print_r($a);

/* Prints
Array
(
    [one] => I
    [two] => II
    [three] => III
    [four] => IV
)
*/
0

Đầu ra của ví dụ cho thấy kết quả

 'II','four' => 'IV', 'three' => 'III', 'one' => 'I'];
  asort($a);
  print_r($a);

/* Prints
Array
(
    [one] => I
    [two] => II
    [three] => III
    [four] => IV
)
*/
1

Array ( [z] => hh [o] => kk [a] => rr [e] => zz )4 Sắp xếp mảng theo khóa theo thứ tự tăng dần

Array ( [z] => hh
        [o] => kk
        [a] => rr
        [e] => zz )
5 sắp xếp các phần tử trong một mảng từ khóa thấp nhất đến khóa cao nhất (theo thứ tự bảng chữ cái). Ví dụ sau minh họa hàm
Array ( [z] => hh
        [o] => kk
        [a] => rr
        [e] => zz )
5

 'II','four' => 'IV', 'three' => 'III', 'one' => 'I'];
  asort($a);
  print_r($a);

/* Prints
Array
(
    [one] => I
    [two] => II
    [three] => III
    [four] => IV
)
*/
2

Hàm

"kk", "e"=>"zz", "z"=>"hh", "a"=>"rr");
 asort($map);
 print_r($map);
0, một ví dụ khác

 'II','four' => 'IV', 'three' => 'III', 'one' => 'I'];
  asort($a);
  print_r($a);

/* Prints
Array
(
    [one] => I
    [two] => II
    [three] => III
    [four] => IV
)
*/
3

Array ( [z] => hh [o] => kk [a] => rr [e] => zz )8 Sắp xếp mảng theo khóa theo thứ tự giảm dần

Array ( [z] => hh
        [o] => kk
        [a] => rr
        [e] => zz )
9 sắp xếp các phần tử trong mảng chủ đề từ khóa cao nhất đến khóa thấp nhất (theo thứ tự bảng chữ cái đảo ngược). Ví dụ sau minh họa hàm
Array ( [z] => hh
        [o] => kk
        [a] => rr
        [e] => zz )
9

Làm cách nào để sắp xếp một mảng trong PHP theo khóa cụ thể?

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 asort() để sắp xếp một mảng kết hợp theo thứ tự tăng dần, theo giá trị.

Làm cách nào để sắp xếp mảng theo giá trị trong PHP?

PHP - Hàm Sắp Xếp Cho Mảng . asort() - sắp xếp các mảng kết hợp theo thứ tự tăng dần, theo giá trị. ksort() - sắp xếp các mảng kết hợp theo thứ tự tăng dần, theo khóa. arsort() - sắp xếp các mảng kết hợp theo thứ tự giảm dần, theo giá trị. rsort() - sort arrays in descending order. asort() - sort associative arrays in ascending order, according to the value. ksort() - sort associative arrays in ascending order, according to the key. arsort() - sort associative arrays in descending order, according to the value.

Làm cách nào để sắp xếp mảng trong PHP?

Hàm sắp xếp mảng trong PHP .
sort() – sắp xếp mảng theo thứ tự tăng dần
rsort() – sắp xếp mảng theo thứ tự giảm dần
asort() – sắp xếp các mảng kết hợp theo thứ tự tăng dần, theo giá trị
ksort() – sắp xếp các mảng kết hợp theo thứ tự tăng dần, theo khóa

Hàm sắp xếp PHP nào sẽ sắp xếp theo khóa và không theo giá trị?

Sắp xếp thuộc tính chức năng