0

この種の配列を整理しようとしています

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;
    });
4

1 に答える 1

3

関数に渡す必要が$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が彼のコメントで正しく述べたように。これは、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;
}
于 2012-08-24T23:04:18.383 に答える