php - 如何使用 PHP 中包含的关联数组的子字段对关联数组进行排序?

标签 php arrays sorting asort

我如何根据其中一个值对关联数组进行排序?

例如:

$arr = array(
    'ted' => array( 'age' => 27 ),
    'bob' => array( 'age' => 18 ),
    'jay' => array( 'age' => 24 )
);

$arr = ???

foreach ($arr as $person)
    echo $person['age'], ', ';

所以输出是:

18, 24, 27

这是一个过于简单的例子,只是为了证明我的问题。

我仍然要求 $arr 是一个关联数组。

最佳答案

uasort() function 允许您指定一个回调函数,它将负责在两个元素之间进行比较——因此,如果您实现了正确的回调函数,应该会做得很好。

在这里,您必须实现一个回调函数,该函数将接收两个数组——并比较 age 项:

function callback($a, $b) {
  if ($a['age'] > $b['age']) {
    return 1;
  } else if ($a['age'] < $b['age']) {
    return -1;
  }
  return 0;
}


在以下代码部分使用该函数:

$arr = array(
    'ted' => array( 'age' => 27 ),
    'bob' => array( 'age' => 18 ),
    'jay' => array( 'age' => 24 )
);

uasort($arr, 'callback');
var_dump($arr);

你会得到这个结果数组:

array
  'bob' => 
    array
      'age' => int 18
  'jay' => 
    array
      'age' => int 24
  'ted' => 
    array
      'age' => int 27

关于php - 如何使用 PHP 中包含的关联数组的子字段对关联数组进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5498718/

相关文章:

c# - 根据数组大小和参数数量确定调用哪个方法

javascript - 是否有任何 javascript 库实现了瑞典语等字母的排序方法?

algorithm - 如果我们将合并排序中的数组拆分为 4 个部分会怎样?还是八个部分?

php - 插入数据时,Mysql 会自动创建一个额外的行

php - jquery ajax请求多个返回值?

java - 无法使用 Android 连接到数据库

python - 在打印变量类型时,如何在 Tensorflow 中获得 pretty-print 结果?

php - 动态调用 PHP 类方法

arrays - 将 json 文件编码到 map 中

Python 在 "u11-Phrase 1000.wav"之前对 "u11-Phrase 101.wav"进行排序;我怎样才能克服这个?