2012-06-27 10 views
39

mảng của tôi trông như thế này:PHP phím mảng sắp xếp lại

array(
    0 => 'val', 
    2 => 'val', 
    3 => 'val', 
    5 => 'val', 
    7 => 'val' 
); 

Làm thế nào tôi có thể sắp xếp lại các phím vì vậy nó sẽ đi như 0, 1, 2, 3, 4?

Trả lời

88

Sử dụng array_values:

$reindexed_array = array_values($old_array); 
+1

hoàn hảo! dường như làm công việc – fxuser

+0

giá trị mảng, mặc dù hợp lệ, không phải là những gì tôi muốn giới thiệu. Bên trong, nó gọi hàm tạo mảng và trả về một mảng mới. bằng cách sử dụng sắp xếp là do (nhanh) nhanh hơn, và ngắn hơn để viết, quá –

+0

tôi không cần phải sử dụng mảng khác .. tôi chỉ đơn giản array_values ​​() hiện tại – fxuser

8

Bằng cách sử dụng sort($array);

Xem PHP tài liệu here.

Tôi muốn giới thiệu sort trên array_values vì nó sẽ không tạo mảng thứ hai. Với đoạn mã sau, bạn có hai mảng chiếm không gian: $ reindexed_array và $ old_array. Không cần thiết.

$reindexed_array = array_values($old_array);

+0

Câu trả lời của tôi sai? sắp xếp sẽ rekey và sắp xếp các mảng, như ông đã yêu cầu. – Rawkode

+0

dường như cũng thực hiện công việc – fxuser

+0

@Rawkode tại sao array_values ​​tạo mảng khác nếu tôi làm mảng array_values ​​() hiện tại? nó dường như làm việc theo cách đó cũng như – fxuser

12
array_splice($old_array, 0, 0); 

Nó sẽ không sắp xếp mảng và sẽ không tạo ra một mảng thứ hai

+0

Đơn giản và hoàn hảo vì nó không tạo mảng thứ 2 và không sửa đổi thứ tự các giá trị ... thx! –

0
array_splice($jam_array, 0, count($jam_array)); 

Để sắp xếp một mảng với thiếu chỉ số trung gian, với số đếm đơn đặt hàng i an toàn hơn. Vì vậy, 0 là chỉ mục đầu tiên và count($jam_array) hoặc sizeof($jam_array) trả lại vị trí thập phân của mảng, cụ thể là, chỉ mục cuối cùng.