使用usort对php数组进行自定义排序

使用usort对php数组进行自定义排序,php,Php,所以我有一个被动的数组,Q,Q2,W,W2,E,E2,R,R2,我想按照我写的顺序 $SpellTitle = array("Passive", "W", "Q", "Q2", "W2", "R", "E", "E2", "R2"); 我已经读过有关使用usort()的内容,但我真的不知道如何使用它 更新 $SpellTitle是从数据库加载的动态数组,因此长度会有所不同,并将在该数组中随机设置。usort将用户定义的函数作为第二个参数。该函数必须返回小于零、零或大于零的整数值。此函数必须采用

所以我有一个被动的数组,Q,Q2,W,W2,E,E2,R,R2,我想按照我写的顺序

$SpellTitle = array("Passive", "W", "Q", "Q2", "W2", "R", "E", "E2", "R2");
我已经读过有关使用usort()的内容,但我真的不知道如何使用它

更新


$SpellTitle是从数据库加载的动态数组,因此长度会有所不同,并将在该数组中随机设置。

usort
将用户定义的函数作为第二个参数。该函数必须返回小于零、零或大于零的整数值。此函数必须采用两个参数-数组值进行比较。如果第一个值比第二个值“低”,则函数返回的值小于零,否则大于零。若值相等,则函数必须返回零

因此,如果您想创建一个自定义函数,用于SOTR整数值或浮点值,您可以使用:

function cmp($a, $b) {
    if((float) $a == (float) $b) {
        return 0;
    } else {
        return ((float) $a < (float) $b) ? -1 : 1;
    }
}
函数cmp($a,$b){
如果((浮动)$a==(浮动)$b){
返回0;
}否则{
回报率((浮动)$a<(浮动)$b)?-1:1;
}
}
使用

asort-对数组排序并维护索引关联

例如:

$SpellTitle = array("Passive", "W", "Q", "Q2", "W2", "R", "E", "E2", "R2");
asort($SpellTitle);
print_r($SpellTitle);
输出:

Array
(
  [6] => E
  [7] => E2
  [0] => Passive
  [2] => Q
  [3] => Q2
  [5] => R
  [8] => R2
  [1] => W
  [4] => W2
)
请注意,数组索引顺序也保持不变。

希望能有所帮助。

请详细说明您拥有的以及您希望通过usort()实现的目标。@我希望数组按以下顺序排序:被动、Q、Q2、W、W2、E、E2、R、,R2@Higeath1)是否有数组中元素的顺序?2) 请在问题中添加您对
usort()
的尝试。是否希望数组
$SpellTitle
按该顺序排列?如果是这样的话,只需完全按照您的意愿输入即可。i、 e.
$SpellTitle=数组(“被动”、“Q”、“Q2”、“W”、“W2”、“e”、“E2”、“R”、“R2”)。由于字符集的排序规则,没有“自然”的方式按照您希望的顺序对其进行排序。为什么
$SpellTitle
按此顺序排列很重要?你想用
$SpellTitle
订购其他东西吗?@RyanVincent检查我的更新它不符合我要求的顺序for@Higeath,我理解你现在面临的问题。我建议使用类别和子类别,其中类别是使用条件的订单,并动态地排序子类别。这样,如果子类别长度发生变化,就不会成为问题。我已经看到了此函数以及usort的工作原理。问题在于用您自己的话来定义函数:我已经阅读了有关使用usort()的内容,但是我真的不知道如何使用它。如果我只是想要定义/解释,我就不会附加我的数组和顺序,我想得到你的数组的顺序对任何人都没有意义,除了你。如果你想帮助设计一个算法,那真的是另一个问题。