php怎么对二维数组排序
-
在PHP中,可以使用内置的函数`array_multisort()`对二维数组进行排序。`array_multisort()`函数可以按照指定的键对二维数组的多个列进行排序。
下面是对二维数组的两个列进行排序的示例代码:
“`php
$array = array(
array(“name” => “John”, “age” => 20),
array(“name” => “Tom”, “age” => 25),
array(“name” => “Alex”, “age” => 18),
array(“name” => “Mike”, “age” => 30)
);$names = array();
$ages = array();
foreach ($array as $key => $row) {
$names[$key] = $row[“name”];
$ages[$key] = $row[“age”];
}// 对$name列进行升序排序,对$age列进行降序排序
array_multisort($names, SORT_ASC, $ages, SORT_DESC, $array);print_r($array);
“`
执行上述代码,将得到以下输出结果:
“`
Array
(
[0] => Array
(
[name] => Alex
[age] => 18
)[1] => Array
(
[name] => John
[age] => 20
)[2] => Array
(
[name] => Mike
[age] => 30
)[3] => Array
(
[name] => Tom
[age] => 25
)
)
“`
上述代码中,首先创建了两个空数组`$names`和`$ages`,然后使用foreach循环遍历二维数组,将name和age列的值存储到这两个数组中。之后,使用`array_multisort()`函数对`$names`和`$ages`进行排序,并传递`SORT_ASC`和`SORT_DESC`参数分别表示升序和降序排序。最后,输出排序结果。除了`array_multisort()`函数,还可以使用其他排序函数来对二维数组进行排序,例如`usort()`函数可以根据自定义的比较函数对数组进行排序。根据排序需求选择合适的函数即可。
2年前 -
PHP提供了多种方法来对二维数组进行排序。以下是五种常见的排序方法:
1. 使用array_multisort()函数:此函数可以对多个数组或多维数组进行排序。它可以按照一个或多个列对二维数组进行排序。例如,可以按照某一列的值升序或降序排序。
代码示例:“`php
$students = array(
array(‘name’ => ‘John’, ‘age’ => 21),
array(‘name’ => ‘Jane’, ‘age’ => 19),
array(‘name’ => ‘Tom’, ‘age’ => 22),
);// 按照年龄升序排序
array_multisort(array_column($students, ‘age’), SORT_ASC, $students);// 输出排序后的数组
print_r($students);
“`输出结果:
“`
Array (
[0] => Array ( [name] => Jane [age] => 19 )
[1] => Array ( [name] => John [age] => 21 )
[2] => Array ( [name] => Tom [age] => 22 )
)
“`2. 使用usort()函数:此函数用于自定义排序。可以通过自定义比较函数来实现按照特定规则进行排序。
代码示例:“`php
$students = array(
array(‘name’ => ‘John’, ‘age’ => 21),
array(‘name’ => ‘Jane’, ‘age’ => 19),
array(‘name’ => ‘Tom’, ‘age’ => 22),
);// 按照名字长度升序排序
usort($students, function($a, $b) {
return strlen($a[‘name’]) – strlen($b[‘name’]);
});// 输出排序后的数组
print_r($students);
“`输出结果:
“`
Array (
[0] => Array ( [name] => Tom [age] => 22 )
[1] => Array ( [name] => John [age] => 21 )
[2] => Array ( [name] => Jane [age] => 19 )
)
“`3. 使用array_column()和array_multisort()函数:array_column()函数可以提取指定列的值,然后使用array_multisort()函数对提取的列进行排序,最后再根据排序结果对二维数组进行重新排序。
代码示例:“`php
$students = array(
array(‘name’ => ‘John’, ‘age’ => 21),
array(‘name’ => ‘Jane’, ‘age’ => 19),
array(‘name’ => ‘Tom’, ‘age’ => 22),
);// 按照名字升序排序
array_multisort(array_column($students, ‘name’), SORT_ASC, $students);// 输出排序后的数组
print_r($students);
“`输出结果:
“`
Array (
[0] => Array ( [name] => Jane [age] => 19 )
[1] => Array ( [name] => John [age] => 21 )
[2] => Array ( [name] => Tom [age] => 22 )
)
“`4. 使用array_map()函数:array_map()函数可以将一个或多个数组的每个元素传递给指定的回调函数,并返回一个包含回调函数的结果的新数组。可以使用此函数将特定列提取为新数组,然后对新数组进行排序。
代码示例:“`php
$students = array(
array(‘name’ => ‘John’, ‘age’ => 21),
array(‘name’ => ‘Jane’, ‘age’ => 19),
array(‘name’ => ‘Tom’, ‘age’ => 22),
);// 提取名字列为新数组,然后按照长度升序排序
$nameArray = array_map(function($student) {
return $student[‘name’];
}, $students);
array_multisort(array_map(‘strlen’, $nameArray), $nameArray);// 根据排序后的新数组对原数组进行重新排序
$newStudents = array();
foreach ($nameArray as $name) {
foreach ($students as $student) {
if ($student[‘name’] == $name) {
$newStudents[] = $student;
break;
}
}
}// 输出排序后的数组
print_r($newStudents);
“`输出结果:
“`
Array (
[0] => Array ( [name] => Tom [age] => 22 )
[1] => Array ( [name] => John [age] => 21 )
[2] => Array ( [name] => Jane [age] => 19 )
)
“`5. 使用foreach循环和usort()函数:可以使用foreach循环遍历二维数组的每一列,然后使用usort()函数对每一列进行排序。
代码示例:“`php
$students = array(
array(‘name’ => ‘John’, ‘age’ => 21),
array(‘name’ => ‘Jane’, ‘age’ => 19),
array(‘name’ => ‘Tom’, ‘age’ => 22),
);// 按照名字升序排序
foreach ($students as $key => $row) {
$name[$key] = $row[‘name’];
}
array_multisort($name, SORT_ASC, $students);// 输出排序后的数组
print_r($students);
“`输出结果:
“`
Array (
[0] => Array ( [name] => Jane [age] => 19 )
[1] => Array ( [name] => John [age] => 21 )
[2] => Array ( [name] => Tom [age] => 22 )
)
“`这些方法可以帮助您在PHP中对二维数组进行排序,您可以根据实际需求选择适合的方法。每种方法都有其优势和适用场景。
2年前 -
PHP提供了一些函数来对二维数组进行排序。常用的函数有`array_multisort()`、`usort()`、`uasort()`等。下面分别介绍这几个函数的使用方法。
## 使用array_multisort()函数对二维数组排序
`array_multisort()`函数可以对一个或多个数组进行排序,并重新索引所有数组。它可以根据指定的条件对二维数组进行排序。### 方法一:
“`php
$students = array(
array(‘name’ => ‘Alice’, ‘score’ => 90),
array(‘name’ => ‘Bob’, ‘score’ => 85),
array(‘name’ => ‘Charlie’, ‘score’ => 95)
);// 根据分数降序排序
array_multisort(array_column($students, ‘score’), SORT_DESC, $students);// 打印排序后的结果
print_r($students);
“`### 方法二:
“`php
$students = array(
array(‘name’ => ‘Alice’, ‘score’ => 90),
array(‘name’ => ‘Bob’, ‘score’ => 85),
array(‘name’ => ‘Charlie’, ‘score’ => 95)
);// 定义一个callback函数来自定义排序规则
function cmp($a, $b)
{
return $b[‘score’] – $a[‘score’];
}// 对数组进行排序
usort($students, ‘cmp’);// 打印排序后的结果
print_r($students);
“`## 使用usort()函数对二维数组排序
`usort()`函数可以通过自定义函数对数组进行排序。自定义函数需要接受两个参数,根据定义的规则返回-1、0、1来对比两个值的相对大小。“`php
$students = array(
array(‘name’ => ‘Alice’, ‘score’ => 90),
array(‘name’ => ‘Bob’, ‘score’ => 85),
array(‘name’ => ‘Charlie’, ‘score’ => 95)
);// 定义一个callback函数来自定义排序规则
function cmp($a, $b)
{
return $b[‘score’] – $a[‘score’];
}// 对数组进行排序
usort($students, ‘cmp’);// 打印排序后的结果
print_r($students);
“`## 使用uasort()函数对二维数组排序
`uasort()`函数可以通过自定义函数对数组进行排序。自定义函数需要接受两个参数,根据定义的规则返回-1、0、1来对比两个键值对的相对大小。“`php
$students = array(
‘Alice’ => array(‘score’ => 90),
‘Bob’ => array(‘score’ => 85),
‘Charlie’ => array(‘score’ => 95)
);// 定义一个callback函数来自定义排序规则
function cmp($a, $b)
{
return $b[‘score’] – $a[‘score’];
}// 对数组进行排序
uasort($students, ‘cmp’);// 打印排序后的结果
print_r($students);
“`以上就是对二维数组排序的几种常用方法。根据实际需求选择合适的方法对二维数组进行排序。
2年前