我有一个多维数组或数组,我也在配置文件中使用。该文件也是手动编辑的,所以我想让一些键具有固定的位置。代码使用此数组读取配置文件,修改,插入密钥等,然后将其保存回来。在保存时我按键排序,但现在我发现它不够好。
有没有办法
'full_name'
始终作为第一个键'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',
),
)
答案 0 :(得分:1)
这是一种方式。它按键按字母顺序对数组进行排序。然后它反转数组并取消设置full_name
和version keys
。然后它再次添加这些键,因此它们被放置在数组的末尾。最后,它再次反转阵列。有点hacky,但我不确定有更好的方法来做你所要求的。
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并编写一个小回调函数。这可能看起来更专业。