我有一个关联数组如下:
$data['england']='pound'
$data['america']='dollar'
$data['europe']='euro'
$data['denmark']='krone'
$data['japan']='yen'
我想对这个数组进行排序,之后我希望'europe'成为数组中的第一个元素。为了对数组进行排序,我在php中使用ksort(),现在我如何获取'europe'数组对象,以便我可以将它作为第一个元素并将所有剩余的元素向下移动?
答案 0 :(得分:6)
一种解决方案是首先从阵列中移除欧洲然后再进行ksort。对数组进行排序后,您可以使用array_unshift()
或array_merge()
添加欧洲作为数组中的第一个元素。
使用合并的示例:
<?php
$data['england']='pound';
$data['america']='dollar';
$data['europe']='euro';
$data['denmark']='krone';
$data['japan']='yen';
unset($data['europe']);
ksort($data);
$data = array('europe' => 'euro') + $data;
print_r($data);
?>
+
运算符的使用不会像merge-operator那样重新索引数组。
答案 1 :(得分:2)
您可以使用回调进行排序:
$data = array (
'england' => 'pound',
'america' => 'dollar',
'europe' => 'euro',
'denmark' => 'krone',
'japan' => 'yen'
);
uksort($data, function($a, $b) {
if($a == 'europe') return -1;
if($b == 'europe') return 1;
return $a > $b;
});