【发布时间】:2017-06-20 14:52:48
【问题描述】:
我正在寻找一种通过键对多维数组进行排序的解决方案,关键是我可以对一组没有自定义键 ID 且数组在集合中的多维数组进行排序,但该数组包含自定义键,我需要按日期排序:
我的数组是:
$newDataSet = array(
'2017-02-03' => array(
array(
array(
'name' => 'Paul',
'state' => 'in',
'date' => '2017-02-03'
),
array(
'name' => 'Paul',
'state' => 'out',
'date' => '2017-02-03'
)
)
),
'2017-01-02' => array(
array(
array(
'name' => 'John',
'state' => 'in',
'date' => '2017-01-02'
),
array(
'name' => 'John',
'state' => 'out',
'date' => '2017-01-02'
)
)
),
'2017-04-01' => array(
array(
array(
'name' => 'Smith',
'state' => 'in',
'date' => '2017-04-01'
),
array(
'name' => 'Smith',
'state' => 'out',
'date' => '2017-04-01'
)
)
)
);
uasort($newDataSet, function($a, $b) { return($a['date'] - $b['date']); });
据我了解, usort 只会对多维数组进行排序,所以在我的情况下是错误的,因为我没有使用它的结构,有没有办法按键 asc 排序?我的意思是dateasc?
感谢任何提示/文档以更好地理解。
预期结果:
$newDataSet = array(
'2017-01-02' => array(
array(
array(
'name' => 'Paul',
'state' => 'in',
'date' => '2017-01-02'
),
array(
'name' => 'Paul',
'state' => 'out',
'date' => '2017-01-02'
)
)
),
'2017-02-03' => array(
array(
array(
'name' => 'John',
'state' => 'in',
'date' => '2017-02-03'
),
array(
'name' => 'John',
'state' => 'out',
'date' => '2017-02-03'
)
)
),
'2017-04-01' => array(
array(
array(
'name' => 'Smith',
'state' => 'in',
'date' => '2017-04-01'
),
array(
'name' => 'Smith',
'state' => 'out',
'date' => '2017-04-01'
)
)
)
);
【问题讨论】:
-
你好@GisoStallenberg 我希望从数据库中按日期 ASC 进行排序做一个 foreach 并按日期分组,我创建了一组新的数组,但是你可以看到日期不是按 ASC 排序的。谢谢
-
好的,对我来说,我还不清楚预期的结果是什么。您可以添加预期的结果吗?
-
内部数组日期相同,无需排序
-
我猜你不是按键
date排序,而是按`$newDataSet'的索引
标签: php arrays sorting multidimensional-array