sorting在PHP中的multidimensional array?
我有这样的一个数组
array(5) { [0]=> array(5) { [0]=> string(7) "jannala" [1]=> string(10) "2009-11-16" [2]=> string(29) " <p>Jotain mukavaa.</p> " [3]=> int(12) [4]=> int(1270929600) } [1]=> array(5) { [0]=> string(7) "jannala" [1]=> string(10) "2009-11-16" [2]=> string(51) " <p>Saapumiserä II/09 astuu palvelukseen</p> " [3]=> int(11) [4]=> int(1270929600) } ... }
我需要做的是根据数组[x] [4](unix时间戳值)对数组进行sorting。 我将如何实现这一目标?
使用比较函数,在这种情况下,它比较数组的unix时间戳值:
function compare($x, $y) { if ( $x[4] == $y[4] ) return 0; else if ( $x[4] < $y[4] ) return -1; else return 1; }
然后用这样的usort
函数调用它:
usort($nameOfArray, 'compare');
该函数将使用用户提供的比较函数按值sorting数组。 如果你想sorting的数组需要按一些非平凡的标准sorting,你应该使用这个函数。
取自PHP:usort手册。
只是我最初的想法:将每个嵌套数组包装在一个对象(类的实例)中,这样一旦按特定字段(在本例中为unix时间戳)进行sorting,就可以使用相同的方法轻松地访问其他信息对象引用。
所以你嵌套的数组数组可能会变成一个对象数组,每个对象都有一个“sorting”方法。
我正在努力与上面的“比较”function,但能够得到这个工作:
function cmp($a, $b) { if ($a['4'] == $b['4']) { return 0; } return ($a['4'] > $b['4']) ? -1 : 1; } usort($array, "cmp");
(请注意,这也是降序,而不是升序sorting。)