Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/242.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用usort忽略_Php_Usort - Fatal编程技术网

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之后,在零结尾。