如何通过自定义字母对php中的数组进行排序?

Pre*_*eys 5 php arrays sorting

我想在php中按键对数组进行排序.但我使用的字母不是普通的英文字母,而是自创字母.这可能吗?

我的字母是

$alphabet = "AjawbpfmnrhHxXsSqkgtTdD =";
Run Code Online (Sandbox Code Playgroud)

数组是这样的:

Array (
   [=k_0] => Array(
       [0] => DI.3,2 &dwA-nTr& @Hrw@
       [1] => mA
       [2] => =k
       [3] => Sfj,t
       [4] => =k
       [5] => pXr
       )
   [aA_2] => Array(
       [0] => DI.7,4 &dwA-nTr& @Hrw-smA-tA,wj@
       [1] => snD
       [2] => aA
       [3] => Sfj,t
       [4] => jt
       [5] => jt,w
       )
  [sqA_1] => Array(
       [0] => DI.6,18 &dwA-nTr& @nswt@
       [1] => ra
       [2] => sqA
       [3] => Sfj,t
       [4] => =s
       [5] => r
       )
   );
Run Code Online (Sandbox Code Playgroud)

所以,如果我按照字母表对这个数组进行排序,那么带有键的数组[=k_0]应该在最后.

Rya*_*yan 7

您可以使用该usort()功能并提供自己的排序逻辑.

请参阅php.net以获取示例.

编辑:使用uksort,而不是usort.见http://www.php.net/manual/en/function.uksort.php.谢谢@Darien!

来自php.net的略微修改的示例 - $alphabet添加了映射的原始代码:

function cmp($a, $b)
{
    // custom sort order - just swapps 2 and 3.
    $alphabet = array (1 => 1, 2 => 3, 3 => 2, 4 => 4, 5 => 5, 6=> 6);

    if ($alphabet[$a] == $alphabet[$b]) {
        return 0;
    }
    return ($alphabet[$a] < $alphabet[$b]) ? -1 : 1;
}

$a = array(3 => 'c' , 2 => 'b', 5 => 'e', 6 => 'f', 1=>'a');
uksort($a, "cmp");

foreach ($a as $key => $value) {
    echo "$key: $value\n";
}
Run Code Online (Sandbox Code Playgroud)