Search This Blog

2018/06/08

Array sort by two keys | array_multisort() | ソート順二つ以上

// array_multisort(): $data を最後のパラメータとして渡し、同じキーでソートする。 
$data[] = ['id' => 1, 'sort_1' => 12, 'sort_2' => 2, 'sort_3' => 'gamma', 'sort_4' => 'Delta']; 
$data[] = ['id' => 2, 'sort_1' => 34, 'sort_2' => 3, 'sort_3' => 'Gamma', 'sort_4' => 'beta']; 
$data[] = ['id' => 3, 'sort_1' => 56, 'sort_2' => 5, 'sort_3' => 'Beta', 'sort_4' => 'Beta']; 
$data[] = ['id' => 4, 'sort_1' => 56, 'sort_2' => 4, 'sort_3' => 'beta', 'sort_4' => 'alpha']; 
$data[] = ['id' => 5, 'sort_1' => 34, 'sort_2' => 1, 'sort_3' => 'Alpha', 'sort_4' => 'Epsilon']; 
$data[] = ['id' => 6, 'sort_1' => 12, 'sort_2' => 6, 'sort_3' => 'alpha', 'sort_4' => 'Zeta']; 

// 列方向の配列を得る 
foreach ($data as $key => $row) {
     $sort_1[$key] = $row['sort_1'];
     $sort_2[$key] = $row['sort_2'];
     $sort_3[$key] = $row['sort_3'];
     $sort_4[$key] = $row['sort_4'];
 }

// データを sort_1 の降順、sort_2 の昇順にソートする。
array_multisort($sort_1, SORT_DESC, $sort_2, SORT_ASC, $data);
print_r("<pre>");
print_r($data);
print_r("</pre>");

// データを sort_3 大文字ではじまる昇順にソートする
array_multisort($sort_3, SORT_ASC, SORT_STRING, $data);
print_r("<pre>");
print_r($data);
print_r("</pre>");

// データを sort_4 小文字で始まる昇順にソートする
array_multisort($$sort_4, SORT_ASC, SORT_REGULAR, $data);
print_r("<pre>");
print_r($data);
print_r("</pre>");

No comments :

Post a Comment