我试图组织这种数组
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'
所以,我必须将零值放在数组的末尾,并使用其他顺序值来更正数组。
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;
});
答案 0 :(得分: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;
}