LoginSignup
0
0

More than 1 year has passed since last update.

phpの自然順ソートは接頭辞があると0埋めを処理できない

Posted at

前提

PHP Version => 8.0.1

phpはnatsort関数で配列を自然順にソートすることができる。

リファレンス

数字のみの場合✅

0埋めがされている場合は先頭の0埋めを考慮した(0を取り除いた)ソートになる。

$zeros = array('09', '8', '10', '009', '011', '0'); 
natsort($zeros);
print_r($zeros);
Array
(
    [5] => 0
    [1] => 8
    [0] => 09
    [3] => 009
    [2] => 10
    [4] => 011
)

接頭辞が含まれる場合❎

数字の前に文字列が含まれている場合は、0埋めを考慮した(0を取り除いた)ソートにならない。

$zeros = array('IMG_09', 'IMG_8', 'IMG_10', 'IMG_009', 'IMG_011', 'IMG_0'); 
natsort($zeros);
print_r($zeros);
Array
(
    [5] => IMG_0
    [3] => IMG_009
    [4] => IMG_011
    [0] => IMG_09
    [1] => IMG_8
    [2] => IMG_10
)

補足:接尾辞が含まれる場合✅

ちなみに接尾辞がある場合は数字のみと同じく0埋めを考慮した(0を取り除いた)ソートになる。

$zeros = array('09.jpg', '8.jpg', '10.jpg', '009.jpg', '011.jpg', '0.jpg'); 
natsort($zeros);
print_r($zeros);
Array
(
    [5] => 0.jpg
    [1] => 8.jpg
    [0] => 09.jpg
    [3] => 009.jpg
    [2] => 10.jpg
    [4] => 011.jpg
)

最後に

自作で関数を作成する以外に解決方法をご存知の方がいたらコメントください。

0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0