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

发布于 2024-12-10 00:47:47 字数 281 浏览 0 评论 0原文

我有一个关联数组,如下所示:

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

我想对该数组进行排序,然后我希望“欧洲”成为数组中的第一个元素。为了对数组进行排序,我在 php 中使用 ksort() ,现在我如何获取“欧洲”数组对象,以便我可以将其作为第一个元素并将所有剩余元素向下移动?

i have got an associative array as follows:

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

I want to sort this array and after that i want 'europe' to be the first element in the array. To sort the array, i am using ksort() in php, now how can i get hold of the 'europe' array object so that i can make it the first element and shift all the remaining elements down?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

长安忆 2024-12-17 00:47:47

一种解决方案是首先从数组中删除 europe,然后进行 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);
?>

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

One solution would be to first remove europe from the array and then do the ksort. When the array is sorted you can use the array_unshift() or array_merge() to add europe as the first element in the array.

An example using 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);
?>

Usage of the + operator will not reindex the array as the merge-operator would.

我的痛♀有谁懂 2024-12-17 00:47:47

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

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

You could use a callback for sorting:

$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;
});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文