在PHP中对关联数组元素进行排序

时间:2011-10-17 11:48:49

标签: php associative-array

我有一个关联数组如下:

$data['england']='pound'
$data['america']='dollar'
$data['europe']='euro'
$data['denmark']='krone'
$data['japan']='yen'

我想对这个数组进行排序,之后我希望'europe'成为数组中的第一个元素。为了对数组进行排序,我在php中使用kso​​rt(),现在我如何获取'europe'数组对象,以便我可以将它作为第一个元素并将所有剩余的元素向下移动?

2 个答案:

答案 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;
});