2011-09-07 62 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