php natsortを使って自然な順番でソートする

php natsortを使って自然な順番でソートする

phpでnatsort関数を使用して、人間が見やすい自然な順番でソートするサンプルコードを記述してます。

環境

  • OS windows10 pro 64bit
  • Apache 2.4.43
  • PHP 7.4.5

※windows10にApacheのインストールはこちら
※windows10にphpのインストールはこちら

natsort関数とは

natsort関数を利用すると、asortでは「test1,test10,test12 …」とソートされるところを

  [0]=>
  string(5) "test1"
  [2]=>
  string(6) "test10"
  [3]=>
  string(6) "test12"
  [1]=>
  string(5) "test2"
  [4]=>
  string(6) "test22"

「test1,test2,test10 …」 と、より人間が並び替えたような形でソートされます。

  [0]=>
  string(5) "test1"
  [1]=>
  string(5) "test2"
  [2]=>
  string(6) "test10"
  [3]=>
  string(6) "test12"
  [4]=>
  string(6) "test22"

サンプルコード

下記は、natsort関数とasort関数を利用したサンプルコードとなります。

<?php

$array1 =  [ "test1", "test2", "test10", "test12", "test22" ] ;

asort( $array1 ) ;
echo "<pre>";
var_dump( $array1 );
echo "</pre>";

natsort( $array1 ) ;
echo "<pre>";
var_dump( $array1 );
echo "</pre>";

実行結果

また、natcasesort関数を利用すると、大文字小文字関係なく人間が並び替えたようなソートを行います。

下記は、natcasesortを使用したサンプルコードとなります。

<?php

$array1 =  [ "test1", "test2", "test10", "Test12", "test22" ] ;

asort( $array1 ) ;
echo "<pre>";
var_dump( $array1 );
echo "</pre>";

natsort( $array1 ) ;
echo "<pre>";
var_dump( $array1 );
echo "</pre>";

natcasesort( $array1 ) ;
echo "<pre>";
var_dump( $array1 );
echo "</pre>";

実行結果

大文字小文字関係なくソートされていることが確認できます。