Php 使用usort忽略
我正在尝试组织这种数组Php 使用usort忽略,php,usort,Php,Usort,我正在尝试组织这种数组 array 0 => array 'id' => '19' 'nome' => 'Lorem ipsum' 'order' => '0' 1 => array 'id' => '23' 'nome' => 'Lorem ipsum' 'order' => '2' 2 => array 'id'
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;
});
您必须在函数中传递
$a
和$b
:
usort($items, function($a, $b) {
if ($a['uf_order'] == 0) return 0;
return ($a['uf_order'] > $b['uf_order']) ? -1 : 1;
});
此外,数组中没有名为uf\u order
的键
正如他在评论中正确指出的那样。这只适用于PHP5.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;
}
+1 OBS:这(使用匿名函数)只适用于php5.3+谢谢大家。。。我修正了我的代码,但现在我需要把一个特定的规则整理好。。。我需要把它放在asc顺序中,但是在末尾插入零顺序,所以首先是顺序值等于1的项目,在2之后,在零结尾。