2011-09-07 8 views
5

natsortがインデックスを変更する方法はありますか?PHP natsortはインデックスを保持します

I.e.

$array = array('IMG0.png', 'img12.png', 'img10.png', 'img2.png', 'img1.png', 'IMG3.png'); 
natsort($array); 

Array 
(
    [0] => IMG0.png 
    [4] => img1.png 
    [3] => img2.png 
    [5] => IMG3.png 
    [2] => img10.png 
    [1] => img12.png 
) 

しかし、私がしたい:

$array = array('IMG0.png', 'img12.png', 'img10.png', 'img2.png', 'img1.png', 'IMG3.png'); 
natsort($array); 

Array 
(
    [0] => IMG0.png 
    [1] => img1.png 
    [2] => img2.png 
    [3] => IMG3.png 
    [4] => img10.png 
    [5] => img12.png 
) 

答えて

21

array_valuesが効果的にシーケンシャルな整数キーと、それに渡された任意の配列のインデックスを再作成します。だから、あなただけ実行する必要があります。

natsort($array); 
$array = array_values($array); 
+0

美しい;ありがとう。答えとしてマークする – jdborg

1

だけで配列の値を取得し、キーと値の関連付けを解除するarray_valuesを使用します。

<?php 

$tarray = array('IMG0.png', 'img12.png', 'img10.png', 'img2.png', 'img1.png', 'IMG3.png'); 
natsort($tarray); 
$tarray = array_values($tarray); 

?> 

ので:

<?php 

$tarray = array('IMG0.png', 'img12.png', 'img10.png', 'img2.png', 'img1.png', 'IMG3.png'); 
print_r($tarray); 
natsort($tarray); 
$tarray = array_values($tarray); 
print_r($tarray); 

?> 

収量を:

Array 
(
    [0] => IMG0.png 
    [1] => img12.png 
    [2] => img10.png 
    [3] => img2.png 
    [4] => img1.png 
    [5] => IMG3.png 
) 
Array 
(
    [0] => IMG0.png 
    [1] => IMG3.png 
    [2] => img1.png 
    [3] => img2.png 
    [4] => img10.png 
    [5] => img12.png 
) 

comment on natsortを参照してください。

関連する問題