我遇到了主要的usort()问题!:(因此,基本上我想按它们的值对数组进行排序。我希望这些值以以下顺序显示:白金,黄金,白银,青铜,完整,无,不完整。现在我可以很好地对其进行排序,但是我想保留其密钥(可能吗?),这是我的代码:
function compareMedals( $a, $b ) {
$aMap = array(1 => 'Platinum', 2 => 'Gold', 3 => 'Silver', 4 => 'Bronze', 5 => 'Complete', 6 => 'None', 7 => 'Uncomplete');
$aValues = array( 1, 2, 3, 4, 5, 6, 7);
$a = str_ireplace($aMap, $aValues, $a);
$b = str_ireplace($aMap, $aValues, $b);
return $a - $b;
}
usort($list, 'compareMedals');
Run Code Online (Sandbox Code Playgroud)
那么可以在保留密钥的同时对它们进行排序吗?谢谢!:)
编辑
数组:
$array = array("post1" => 'Platinum', "Post2" => "Bronze, "Post3" = > Gold)
Run Code Online (Sandbox Code Playgroud)
应该输出:
"Post1" => 'Platinum',
"Post3" => 'Gold',
"Post2" => 'Bronze'
Run Code Online (Sandbox Code Playgroud)
但是它输出的是:
"0" => 'Platinum',
"1" => 'Gold',
"2" => 'Bronze'
Run Code Online (Sandbox Code Playgroud)
只需使用uasortintead即可usort。uasortis的定义
使用用户定义的比较函数对数组进行排序并维护索引关联。
有一个带有比较功能和uasort的代码示例:
$list = array('post1' => 'Gold', 'post2' => 'None', 'post3' => 'Platinum');
function compareMedals( $a, $b ) {
$aMap = array(1 => 'Platinum', 2 => 'Gold', 3 => 'Silver', 4 => 'Bronze', 5 => 'Complete', 6 => 'None', 7 => 'Uncomplete');
$aValues = array( 1, 2, 3, 4, 5, 6, 7);
$a = str_ireplace($aMap, $aValues, $a);
$b = str_ireplace($aMap, $aValues, $b);
return $a - $b;
}
uasort($list, 'compareMedals');
print_r($list);
Run Code Online (Sandbox Code Playgroud)
该代码给出了结果
Array
(
[post3] => Platinum
[post1] => Gold
[post2] => None
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
532 次 |
| 最近记录: |