如何在php中自定义排序数组索引?

如何在php中自定义排序数组索引?,php,multidimensional-array,Php,Multidimensional Array,我有一个或多个多维数组,我也在配置文件中使用它们。该文件也手动编辑,所以我希望一些关键点有固定的位置。该代码使用该数组读取配置文件,修改、插入密钥等,然后将其保存回去。在保存时,我对钥匙进行了排序,但现在我发现它不够好 有没有什么办法让你 键“全名”始终作为第一个键 键'version'作为第二个键 其余的钥匙按字母顺序排列 阵列的示例 array ( 'skroob' => array ( 'ssh' => 'skroob', 'codebase_pa

我有一个或多个多维数组,我也在配置文件中使用它们。该文件也手动编辑,所以我希望一些关键点有固定的位置。该代码使用该数组读取配置文件,修改、插入密钥等,然后将其保存回去。在保存时,我对钥匙进行了排序,但现在我发现它不够好

有没有什么办法让你

  • “全名”
    始终作为第一个键
  • 'version'
    作为第二个键
  • 其余的钥匙按字母顺序排列
阵列的示例

array (
  'skroob' => 
  array (
    'ssh' => 'skroob',
    'codebase_path' => '/srv/www/htdocs/imacs/radek/4.0.1',
    'ssh_status' => 'ok',
    'version' => '4.0.1',
    'ssh_last_access' => '2012-Feb-17 10:07:26',
    'edu_url' => 'https://testing/imacs/radek/4.0.1',
    'full_name' => 'skroob 4.0.1',
  ),
  'testing' => 
  array (
    'full_name' => 'My beautiful testing server (trunk)',
    'version' => 'trunk',
    'ssh' => 'testing',
    'codebase_path' => '/srv/www/htdocs/imacs/radek/trunk',
    'ssh_last_access' => '2012-Feb-17 10:07:26',
    'ssh_status' => 'ok',
  ),
)

这里有一条路。它按字母顺序按键对数组进行排序。然后它反转数组并取消设置
全名
版本键
。然后,它再次添加这些键,以便将它们放置在数组的末尾。最后,它再次反转数组。有点老套,但我不确定有没有更好的方法来满足你的要求

ksort($arr['skroob']);

$arr['skroob'] = array_reverse($arr['skroob']);

$version = $arr['skroob']['version'];
$full_name = $arr['skroob']['full_name'];

unset($arr['skroob']['full_name'], $arr['skroob']['version']);

$arr['skroob']['version'] = $version;
$arr['skroob']['full_name'] = $full_name;

$arr['skroob'] = array_reverse($arr['skroob']);

另一个解决方案是使用uksort并编写一个小回调函数。这看起来可能更专业一些。

很酷,我没有其他解决方案:-)谢谢。