1

私はこれにしばらく取り組んできました。PHP のマルチレベル配列はそれほど簡単ではありません。これが私のコードです:

Array
(
[0]=array(
   "level"=>'Level1',
   "id"=>1,
   "title"=>"Home",
   "order"=>"0"
    );
[1]=array(
    "level"=>'Level1',
    "id"=>"355",
    "title"=>"About Us", 
    "order"=>"21"
  );
 [2]=array(
    "level"=>'Level1',
    "id"=>"10",
    "title"=>"Test",
    "order"=>"58"
 );
[3]=array(
    "level"=>'Level2',
    "id"=>13,
    "title"=>"Our Team",
    "order"=>"11",
    "parent_id"=>"355"
 );
  [4]=array(
    "level"=>'Level2',
    "id"=>12,
    "title"=>"The In Joke",
    "order"=>"12",
    "parent_id"=>"355"
  );
  [5]=array(
    "level"=>'Level2',
    "id"=>11,
    "title"=>"Our History",
    "order"=>"13",
    "parent_id"=>"355"
  ));
> 



   1-Home
   2-about us
   3-Our Team
   4-The In Joke
   5-Our History
   6-Test   

私はマルチレベルの親子配列を持っており、約結果に従ってソートする必要があり、使用方法がわかりませんでしたusort()

4

1 に答える 1

0

配列の並べ替えに使用usort()するには、カスタムの並べ替え関数を作成する必要があります。比較のために値を確認する必要$array['title']があるため、比較関数で次の配列インデックスを使用します。

$array = array(
    array(
       "level"=>'Level1',
       "id"=>1,
       "title"=>"Home",
       "order"=>"0"
    ),
    // your additional multidimensional array values...
);

// function for `usort()` - $a and $b are both arrays, you can look at their values for sorting
function compare($a, $b){
    // If the values are the same, return 0
    if ($a['title'] == $b['title']) return 0;
    // if the title of $a is less than $b return -1, otherwise 1
    return ($a['title'] < $b['title']) ? -1 : 1;
}

usort($array, 'compare');
于 2012-10-24T13:38:18.800 に答える