2012-08-24 45 views
0

我试着去组织这种阵列使用usort忽略

array 
    0 => 
    array 
     'id' => '19' 
     'nome' => 'Lorem ipsum' 
     'order' => '0' 
    1 => 
    array 
     'id' => '23' 
     'nome' => 'Lorem ipsum' 
     'order' => '2' 
    2 => 
    array 
     'id' => '45' 
     'nome' => 'Lorem ipsum' 
     'order' => '0' 
    3 => 
    array 
     'id' => '6' 
     'nome' => 'Lorem ipsum' 
     'order' => '0' 
    4 => 
    array 
     'id' => '23' 
     'nome' => 'Lorem ipsum' 
     'order' => '1' 
    5 => 
    array 
     'id' => '12' 
     'nome' => 'Lorem ipsum' 
     'order' => '0' 

所以,我必须把零值,以数组的结尾,并利用他人的订单价值订货correctely阵列。

array 
    0 => 
    array 
     'id' => '23' 
     'nome' => 'Lorem ipsum' 
     'order' => '1' 
    1 => 
    array 
     'id' => '23' 
     'nome' => 'Lorem ipsum' 
     'order' => '2' 
    2 => 
    array 
     'id' => '19' 
     'nome' => 'Lorem ipsum' 
     'order' => '0' 
    3 => 
    array 
     'id' => '45' 
     'nome' => 'Lorem ipsum' 
     'order' => '0' 
    4 => 
    array 
     'id' => '6' 
     'nome' => 'Lorem ipsum' 
     'order' => '0' 
    5 => 
    array 
     'id' => '12' 
     'nome' => 'Lorem ipsum' 
     'order' => '0' 

我尝试使用usort这样,与不正确的结果:

usort($items, function() { 
     if ($a['uf_order'] == 0) return 0; 
     return ($a['uf_order'] > $b['uf_order']) ? -1 : 1; 
    }); 

回答

2

你要通过$a$b的功能:

usort($items, function($a, $b) { 
    if ($a['uf_order'] == 0) return 0; 
    return ($a['uf_order'] > $b['uf_order']) ? -1 : 1; 
}); 

也没有钥匙在你的数组中被称为uf_order

由于NomikOS正确地在他的评论中指出。这只适用于PHP 5.3+。如果你有PHP的一个旧版本,你可以这样做:

usort($items, 'cmp'); 

function cmp ($a, $b) { 
    if ($a['uf_order'] == 0) return 0; 
    return ($a['uf_order'] > $b['uf_order']) ? -1 : 1; 
} 
+2

+1 OBS:这(使用匿名函数)仅将在PHP5.3作品+ –

+0

感谢你们......我解决我的代码,但现在我需要将一个特定的规则放入顺序中...我需要将它放入顺序中,但在末尾插入零阶,因此首先将顺序值等于1,等于2,等于零和等于零的项目。 – fdias