【发布时间】:2018-08-23 01:14:15
【问题描述】:
我有一个关联数组键/值来指示一个组。我想对数组进行洗牌,使组按随机顺序排列,但组中的项目仅在其组内洗牌。换句话说,我想采取这样的方式:
[
[
"name" => "Buffy",
"group" => 1
],
[
"name" => "Willow",
"group" => 1
],
[
"name" => "Xander",
"group" => 2
],
[
"name" => "Giles",
"group" => 2
],
[
"name" => "Tara",
"group" => 3
],
[
"name" => "Angel",
"group" => 3
],
[
"name" => "Spike",
"group" => 3
]
]
然后返回一些更像这样的东西:
[
[
"name" => "Spike",
"group" => 3
]
[
"name" => "Angel",
"group" => 3
],
[
"name" => "Tara",
"group" => 3
],
[
"name" => "Willow",
"group" => 1
],
[
"name" => "Buffy",
"group" => 1
],
[
"name" => "Xander",
"group" => 2
],
[
"name" => "Giles",
"group" => 2
],
]
我意识到这可能通过两个或三个排序来实现,但如果这可以通过单个 usort 来完成,那就太好了。
【问题讨论】:
-
这是一个有趣的问题,但我想问一下,为什么你有示例中的初始结构?如果你想与组一起做事,为什么不使用:[ "group" => 1, "names" => [ "Buffy", "Willow" ] ]