2013-03-11 45 views
0

我正在CakePHP框架内工作,并且有以下多维数组,我需要按值进行排序。我正在使用usort,但无法弄清如何由[ForumPost]的孩子进行排序。用儿童的usort对多维数组排序

这里的数组:

Array 
( 
    [0] => Array 
     (
      [ForumPost] => Array 
       (
        [id] => 174 
        [forum_id] => 81 
        [user_id] => 39 
        [title] => A test post 
    [1] => Array 
     (
      [ForumPost] => Array 
       (
        [id] => 64 
        [forum_id] => 208 
        [user_id] => 36 
        [title] => B test post 
... etc 

我的功能和呼叫是:

usort($array, array("ForumSearchesController", "cmp")); 

function cmp($a, $b) { 
    return $a['ForumPost']['title'] - $b['ForumPost']['title']; 
} 
+1

取代'美元[ 'ForumPost'] [ '标题'] - $ B [ 'ForumPost'] [ '标题']',它看起来像您刚才需要'返回strcmp($ a ['ForumPost'] ['title'],$ b ['ForumPost'] ['title']);' – 2013-03-11 13:53:55

+0

鉴于标题是一个字符串,为什么你使用minus来比较? – 2013-03-11 13:54:17

+0

看看PHP的usort页面上的例子3 http://php.net/manual/en/function.usort.php – Pitchinnate 2013-03-11 13:55:41

回答

0

你不能简单地减去彼此标题(字符串),并期待一个有意义的结果。字符串的等效调用函数strcmp

function cmp($a, $b) { 
    return strcmp($a['ForumPost']['title'], $b['ForumPost']['title']); 
} 
+0

哈哈,这是总的感觉。不知道我在想什么。谢谢你,朋友。你们都让StackOverflow成为互联网上最棒的网站。 – JamieHoward 2013-03-11 14:07:25