#前提
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
)
##最後に
自作で関数を作成する以外に解決方法をご存知の方がいたらコメントください。