2012-05-05 37 views
6

Tôi có một mảng mà trông như thế này:Thay Mảng phím với số Tăng dần

[867324] 
    [id] => 867324 
    [name] => Example1 

[345786]  
    [id] => 345786 
    [name] => Example2 

[268531] 
    [id] => 268531 
    [name] => Example3 

Như bạn có thể thấy, các yếu tố đầu tiên không phải là trong bất kỳ thứ tự cụ thể. Với mục đích của ví dụ, bạn có thể xem xét chúng số ngẫu nhiên. Kết quả cuối cùng tôi muốn kết thúc là:

[0] 
    [id] => 867324 
    [name] => Example1 

[1]  
    [id] => 345786 
    [name] => Example2 

[2] 
    [id] => 268531 
    [name] => Example3 

Tôi đã thử phát nổ, nhưng rõ ràng tôi phải làm điều gì đó sai. Bất kỳ trợ giúp được đánh giá cao!

Trả lời

26

Thao tác này sẽ đổi lại các phím trong khi vẫn giữ thứ tự các phần tử.

$new_array = array_values($old_array); 
+1

Th là một! – Nadh

+0

Ah, đó là những gì nó được. Bây giờ chỉ cần tò mò - nhanh như thế nào là loại quá trình cho một mảng khá lớn? –

+0

Khá chậm. Tôi chỉ cần whipped lên một kịch bản để renumber một mảng phần tử 1.000 nhiều lần, và máy 2.8GHz của tôi chỉ có thể quản lý 8.000 lặp/giây. Bạn chắc chắn không muốn làm điều này trên mỗi tải trang nếu bạn có nhiều hơn một vài chục yếu tố. – kijin

2

Nếu thứ tự của các phần tử không quan trọng, tôi tin rằng phương thức sắp xếp PHP sẽ không duy trì chỉ mục. http://www.php.net/manual/en/function.sort.php

sort($array); 

Lưu ý: Chức năng này gán phím mới với các yếu tố trong mảng. Nó sẽ xóa bất kỳ khóa hiện có nào có thể đã được gán, thay vì chỉ sắp xếp lại các phím.

Cập nhật: Cách này hoạt động, mặc dù phương pháp array_values ​​được đề cập có ý nghĩa hơn nhiều.

+1

Có , tất cả đều tốt :) –

7

Bạn có thể thiết lập lại các phím mảng sử dụng array_values():

$array = array_values($array); 

Sử dụng phương pháp này một mảng như:

Array('123'=>'123', 
     '456'=>'456', 
     '789'=>'789') 

sẽ được đánh số lại như:

Array('0'=>'123', 
     '1'=>'456', 
     '2'=>'789') 
Các vấn đề liên quan