在PHP中排序关联数组元素


Sorting associative array elements in PHP

我得到了一个如下的关联数组:

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

我想对这个数组进行排序,之后我想让'europe'成为数组中的第一个元素。对数组进行排序,我在php中使用ksort(),现在我如何才能获得'europe'数组对象,以便我可以使其成为第一个元素并将所有剩余元素移下来?

一种解决方案是首先从数组中删除europe,然后进行k排序。当数组排序时,您可以使用array_unshift()array_merge()将europe添加为数组中的第一个元素。

使用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);
?>

使用+操作符不会像合并操作符那样重新索引数组。

您可以使用回调进行排序:

$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;
});