2016-06-10 80 views
-1
<?php 

$items=[ 
    ['name'=>'a','require'=>[]], 
    ['name'=>'b','require'=>['a']], 
    ['name'=>'c','require'=>['b']], 
    ['name'=>'d', 'require'=>['c']] 

]; 

shuffle($items); 

usort($items, function($a,$b){ 
    if(in_array($b['name'],$a['require'])){ 
     return -1; 
    } 
    if(in_array($a['name'],$b['require'])){ 
     return 1; 
    } 
    return 0; 
}); 

print_r($items); 

我期待usort會回到我原來的排序數組,但每次我得到不同的排序數組。我做錯了什麼?爲什麼usort()不排序數組?

+0

你爲什麼需要這樣做?任何背後的具體目的? – RJParikh

回答

2

比較功能需要滿足一些基本要求,例如,如果a<b爲1,則b<a爲-1。

你的功能沒有意義,因此是不可預知的結果。