[0] => Array
(
[id] => 26997
[product_id] => Array
(
[0] => stdClass Object
(
[id] => 1406
[type_id] => 1
[title] => Shrek - Forever After
[cover] =>
[coverid] => 0
[inserted_by] => 0
[inserted_date] => 2011-02-11 14:28:08
[status_id] => 1
)
)
[variable_id] => 1
[variable_value] => 10
[master_value] =>
[released_date] => 2010-12-07
[price] => Array
(
[0] => Array
(
[product_id] => 1406
[media_format] => BLURAY
[price] => 349000
[discount] => 5
)
)
)
[1] => Array
(
[id] => 26678
[product_id] => Array
(
[0] => stdClass Object
(
[id] => 1375
[type_id] => 1
[title] => Shrek Quadrilogy : The Whole Story ( 4 Disc )
[cover] => 2066940989de9372d9c39e216430cd5a.jpg
[coverid] => 1051
[inserted_by] => 0
[inserted_date] => 2011-02-07 11:23:21
[status_id] => 1
)
)
[variable_id] => 1
[variable_value] => 10
[master_value] =>
[released_date] => 2011-02-04
[price] => Array
(
[0] => Array
(
[product_id] => 1375
[media_format] => BLURAY
[price] => 999000
[discount] => 5
)
)
)
我想按release_date排序,如果你查看结果我希望结果是最新的。请帮忙......
答案 0 :(得分:2)
这是用户回调排序功能的目的
function srtReleased($a, $b) {
$aDate = strtotime($a['released_date']);
$bDate = strtotime($b['released_date']);
if ($aDate == $bDate) {
return 0;
}
return ($aDate > $bDate) ? -1 : 1;
}
usort($array, "srtReleased");
答案 1 :(得分:0)
使用像Bubble Sort之类的简单内容(假设您的数组不是太大,否则您最好使用更有效的排序算法):
for($i = 0; $i < count($myArray) - 1; $i++) {
for($j = $i; $j < size(myArray) - 1; $j++) {
if($myArray[$i]['released_data'] < $myArray[$j]['released_data']) {
// Swap entries
$tmp = $myArray[$i + 1];
$myArray[$i + 1] = $myArray[$i];
$myArray[$i] = $tmp;
}
}
}
它基本上检查下一个项目是否大于当前项目,如果是这种情况则交换它们。
你也可以使用usort,正如nikic所建议的那样。要使用它,你需要创建一个比较函数,使用我在示例中显示的相同比较,但包含在函数中。
答案 2 :(得分:0)
我的建议是使用usort,正如nikic建议的那样。它更优雅。此外,我不建议使用冒泡排序。它的唯一优势是更容易理解。
这是一个链接,指向某人在PHP中发布的插入排序:
http://www.think-lamp.com/2009/08/fastest-insertion-sort-in-php/
如果您可以根据发布日期采用此功能进行排序,并使用usort功能,那么您将开始营业。