我正在尝试组织这种数组
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;
});发布于 2012-08-25 07:04:18
您必须在函数中传递$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;
}https://stackoverflow.com/questions/12117697
复制相似问题