<?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会重新调整原始排序数组,但每次我得到不同的排序数组。我做错了什么?
答案 0 :(得分:2)
比较功能需要满足一些基本要求,例如:如果@RunWith(MockitoJUnitRunner.class)
public class ServiceTest{
@Mock
private UrlProvider urlProvider;
@InjectMocks
private Service service = new Service();
@Before
public void init(){
when(urlProvider.getUrl()).thenReturn("http://test.url");
}
...
}
为1,则a<b
为-1。
你的功能没有意义,因此结果不可预测。