按键和任何子键排序多维数组?

  • 本文关键字:数组 任何 排序 php sorting
  • 更新时间 :
  • 英文 :


我对这个问题很挠头。如果有一个类似以下内容的数据集:

$data = [
[
'name' => 'Brian',
'account' => [
[
'id' => 1,
]
]
],
[
'name' => 'Adam',
'account' => [
[
'id' => 3,
],
]
],
[
'name' => 'Chris',
'account' => [
[
'id' => 4,
],
]
],
[
'name' => 'Adam',
'account' => [
[
'id' => 2,
],
]
],
[
'name' => 'David',
'account' => [
[
'id' => 5,
],
]
],
[
'name' => 'Esther',
'account' => [
[
'id' => 6,
],
]
],
];

我正试图按名称排序,并可选地按帐户ID排序。我原以为这对于多排序来说是一项简单的任务,但是我偶然发现了该任务的递归性质。我必须检测是否有子元素也是数组,然后获取它们的键并对根元素排序。

预期结果:

Adam (id: 2)
Adam (id: 3)
Brian (id: 1)
Chris (id: 4)
David (id: 5)
Esther (id: 6)

您可以使用ussort()来排序,就像:

usort($data, function($a, $b){
if ($a['name'] > $b['name']) return 1;
if ($a['name'] < $b['name']) return -1;
if ($a['account'][0]['id'] > $b['account'][0]['id']) return 1;
if ($a['account'][0]['id'] < $b['account'][0]['id']) return -1;
});

你可以在https://onlinephp.io/c/70893查看

最新更新