読者です 読者をやめる 読者になる 読者になる

配列のソート


「5.8配列のソート」からのメモ。

  • 値を使ったソート
    • インデックスの張り直しをするので普通の配列に使う
<?php
$hoge = array(10 , 8 , 9);
sort($hoge);
print_r($hoge);
?>
Array
(
    [0] => 8
    [1] => 9
    [2] => 10
)
  • 値を使ったソート
    • インデックスの張り直しをしないので連想配列で使う
<?php
$hoge = array("bob" => 10 , "carol" => 8 , "alice" => 9);
asort($hoge);
print_r($hoge);
?>
Array
(
    [carol] => 8
    [alice] => 9
    [bob] => 10
)
  • キーを使ったソート
<?php
$hoge = array("bob" => 10 , "carol" => 8 , "alice" => 9);
ksort($hoge);
print_r($hoge);
?>
Array
(
    [alice] => 9
    [bob] => 10
    [carol] => 8
)
  • ユーザ定義関数によるソート
<?php
function my_sort($a , $b)
{
  return $a - $b;
}

$hoge = array(10 , 8 , 9);
usort($hoge , "my_sort");
print_r($hoge);
?>
Array
(
    [0] => 8
    [1] => 9
    [2] => 10
)
  • 自然順によるソート
    • インデックスの張り替えが無いので、array_merge()で対応(他にいいやり方ないかな?)
<?php
$hoge = array("data5" , "data1" , "data10");
natsort($hoge);
print_r($hoge);

$hoge = array_merge($hoge , array());
print_r($hoge);
?>
Array
(
    [1] => data1
    [0] => data5
    [2] => data10
)
Array
(
    [0] => data1
    [1] => data5
    [2] => data10
)