按 PHP 中键的字母顺序对多维数组进行排序
sort multidimensional array in alphabetical order of the keys in PHP
我有一个像这样的带有字母键的数组:
Array
(
[0] => Array
(
[UserID] => 1
[EmailAddress] => user5@gmail.com
[TransID] => fjhf8f7848
)
[1] => Array
(
[UserID] => 1
[EmailAddress] => johndoe@gmail.com
[TransID] => dfsdhsdu78
)
)
我想按键的字母顺序对这个数组进行排序。
预期输出为:
Array
(
[0] => Array
(
[EmailAddress] => user5@gmail.com
[TransID] => fjhf8f7848
[UserID] => 1
)
[1] => Array
(
[EmailAddress] => johndoe@gmail.com
[TransID] => dfsdhsdu78
[UserID] => 2
)
)
我尝试了各种数组排序函数,但它们 return 空白。
如何使用字母键按字母顺序对这样的数组进行排序?
您可以使用 array_map 和 ksort,
$result = array_map(function(&$item){
ksort($item); // sort by key
return $item;
}, $arr);
Demo.
使用foreach循环,
foreach($arr as &$item){
ksort($item);
}
编辑
在这种情况下,您可以使用,
foreach($arr as &$item){
uksort($item, function ($a, $b) {
$a = strtolower($a); // making cases linient and then compare
$b = strtolower($b);
return strcmp($a, $b); // then compare
});
}
输出
Array
(
[0] => Array
(
[EmailAddress] => user5@gmail.com
[TransID] => fjhf8f7848
[UserID] => 1
)
[1] => Array
(
[EmailAddress] => johndoe@gmail.com
[TransID] => dfsdhsdu78
[UserID] => 1
)
)
我有一个像这样的带有字母键的数组:
Array
(
[0] => Array
(
[UserID] => 1
[EmailAddress] => user5@gmail.com
[TransID] => fjhf8f7848
)
[1] => Array
(
[UserID] => 1
[EmailAddress] => johndoe@gmail.com
[TransID] => dfsdhsdu78
)
)
我想按键的字母顺序对这个数组进行排序。 预期输出为:
Array
(
[0] => Array
(
[EmailAddress] => user5@gmail.com
[TransID] => fjhf8f7848
[UserID] => 1
)
[1] => Array
(
[EmailAddress] => johndoe@gmail.com
[TransID] => dfsdhsdu78
[UserID] => 2
)
)
我尝试了各种数组排序函数,但它们 return 空白。
如何使用字母键按字母顺序对这样的数组进行排序?
您可以使用 array_map 和 ksort,
$result = array_map(function(&$item){
ksort($item); // sort by key
return $item;
}, $arr);
Demo.
使用foreach循环,
foreach($arr as &$item){
ksort($item);
}
编辑
在这种情况下,您可以使用,
foreach($arr as &$item){
uksort($item, function ($a, $b) {
$a = strtolower($a); // making cases linient and then compare
$b = strtolower($b);
return strcmp($a, $b); // then compare
});
}
输出
Array
(
[0] => Array
(
[EmailAddress] => user5@gmail.com
[TransID] => fjhf8f7848
[UserID] => 1
)
[1] => Array
(
[EmailAddress] => johndoe@gmail.com
[TransID] => dfsdhsdu78
[UserID] => 1
)
)