2010-04-22 50 views
5

Giả sử bạn có một mảng kết hợpWhats cách thanh lịch nhất để sắp xếp lại một mảng kết hợp là gì?

$hash['Fruit'] = 'Apple'; 
$hash['Name'] = 'Jeff'; 
$hash['Car'] = 'Ford'; 

và bạn không thể thay đổi thứ tự trong đó các biến này được tạo ra. Vì vậy, Ô tô luôn được thêm vào mảng sau Tên, v.v. Cách tốt nhất để thêm/di chuyển Xe đến đầu mảng kết hợp thay vì kết thúc (mặc định) là gì?

+0

bạn đang cố gắng để sắp xếp mảng? – Galen

+0

và bạn đang cố gắng sắp xếp nó theo khóa theo thứ tự bảng chữ cái? hoặc bạn chỉ muốn đẩy xe lên đầu để lại tất cả các yếu tố khác bị ảnh hưởng? – webbiedave

+0

Câu nào? – webbiedave

Trả lời

8
$hash = array('Car' => 'Ford') + $hash; 
+0

Hey, tâm trí tuyệt vời * làm * nghĩ như nhau: D Xem câu trả lời của tôi cho phiên bản biến. – erisco

2

ksort()?

Nhưng tại sao bạn quan tâm đến thứ tự nội bộ của mảng?

+0

Tôi nghĩ rằng anh ta yêu cầu đẩy lên đầu mảng, đó là một gợi ý tốt, mặc dù –

+0

Tôi đã nghĩ về điều này nhưng với dữ liệu thực sự của mình, giải pháp rất gián tiếp này sẽ không luôn hoạt động. – erisco

+0

Trong trường hợp này, tôi sẽ lặp qua mảng với foreach() sau, và cho mục đích hiển thị, tôi muốn các giá trị nhất định xuất hiện trên đầu trang. –

1
array_reverse($hash, true); 

Đây không phải là một giải pháp rất thẳng, một trong đó là:

$value = end($hash); 
$hash = array(key($hash) => $value) + $hash; 
+0

yep, tôi đã đọc ;-) cách tuyệt vời để di chuyển mục đã được thêm vào một mảng. – zerkms

0

Lừa khác là -

$new_items = array('Car' => 'Ford'); 
$hash = array_merge($new_items, $hash); 

Bạn có thể tái sắp xếp các phím mảng mới cũng có. Giả sử xe đầu tiên sau đó lĩnh vực khác (nói Id) sau đó mảng vẫn như vậy ....

$new_items = array('Car' => 'Ford','Id'=>'New Id'); 
$hash = array_merge($new_items, $hash); 

Mảng sẽ trở nên giống như

$hash['Car'] = 'Ford'; 
$hash['Id'] = 'New Id'; 
$hash['Fruit'] = 'Apple'; 
$hash['Name'] = 'Jeff'; 
Các vấn đề liên quan