我有这个数组我试过usort和array_multisort但两个都没有用。我想用release_date对每个内部数组进行排序。这是最新的release_date应该在测试数组中首先出现,并且在第二个内部数组中再次类似'再次测试'
$new_array = array(
'testing' => array(
array(
'id' => 405275016,
'release_date' => '2010-12-02 00:00:00'
),
array(
'id' => 342809056,
'release_date' => '2009-12-09 00:00:00'
),
array(
'id' => 292430272,
'release_date' => '2008-10-19 00:00:00'
)
)
'test again' => array(
array(
'id' => 405275016,
'release_date' => '2010-12-02 00:00:00'
)
array(
'id' => 292430272,
'release_date' => '2008-10-19 00:00:00'
)
)
);
任何想法都将受到高度赞赏。
修改 的
我做了
foreach($new_array as $vsort) {
uasort($vsort, function (array $a, array $b) {
return $a["release_date"] - $b["release_date"];
});
}
但我的new_array
答案 0 :(得分:1)
您的问题的答案在于uasort()
。
如果要对每个数组进行排序,请执行foreach
循环并在每个
uasort()
。
function mySort($a, $b)
{
if ($a['id'] == $b['id']) {
return 0;
}
return ($a['id'] < $b['id']) ? -1 : 1;
}
foreach ($array as $index => $arr) {
uasort($array[$index], 'mySort');
}
看来你正在使用PHP 5.3。在这种情况下,它可以像这样重写:
foreach ($array as $index => $arr) {
uasort($array[$index], function($a, $b) {
if ($a['id'] == $b['id']) {
return 0;
}
return ($a['id'] < $b['id']) ? -1 : 1;
});
}
答案 1 :(得分:-1)
使用foreach($ new_array作为$ key =&gt; $ val)并传递$ new_array [$ key]而不是$ vsort,$ vsort是数组项的副本而不是项目本身