2012-05-07 32 views
41

thể trùng lặp:
How can I sort arrays and data in PHP?
How do I sort a multidimensional array in php
PHP Sort Array By SubArray Value
PHP sort multidimensional array by valuePHP loại mảng theo thứ tự abc bằng cách sử dụng giá trị subarray

mảng của tôi trông giống như:

Array(
    [0] => Array(
     [name] => Bill 
     [age] => 15 
    ), 
    [1] => Array(
     [name] => Nina 
     [age] => 21 
    ), 
    [2] => Array(
     [name] => Peter 
     [age] => 17 
    ) 
); 

Tôi muốn sắp xếp chúng theo thứ tự chữ cái dựa trên tên của chúng. Tôi thấy PHP Sort Array By SubArray Value nhưng nó không giúp được gì nhiều. Bất kỳ ý tưởng nào về cách thực hiện việc này?

+2

Câu hỏi bạn đã liên kết chứa câu trả lời chính xác bạn cần .. chỉ cần thay thế '' optionNumber'' bằng ''name'' trong hàm so sánh. Bỏ phiếu để đóng bản sao. Nếu có điều gì đó trong câu hỏi khác bạn không hiểu, hãy hỏi cụ thể về điều đó. –

+0

Tôi chưa bao giờ thấy một mảng có cùng khóa cho hai giá trị. Có lẽ đó là lý do tại sao sắp xếp không hoạt động? – hakre

Trả lời

95

Dưới đây là câu trả lời của bạn và nó hoạt động 100%, tôi đã thử nghiệm nó.

<?php 
$a = Array(
    1 => Array(
     'name' => 'Peter', 
     'age' => 17 
    ), 
    0 => Array(
     'name' => 'Nina', 
     'age' => 21 
    ), 
    2 => Array(
     'name' => 'Bill', 
     'age' => 15 
    ), 
); 
function compareByName($a, $b) { 
    return strcmp($a["name"], $b["name"]); 
} 
usort($a, 'compareByName'); 
/* The next line is used for debugging, comment or delete it after testing */ 
print_r($a); 
+12

Tất cả trong một dòng: usort ($ array, function ($ a, $ b) {return strcmp ($ a ["name"], $ b ["name"]);}); – pmrotule

+4

@pmrotule: Chỉ dành cho phiên bản> PHP 5.3 – Mohit

+7

Đáng chú ý rằng strcmp phân biệt chữ hoa chữ thường. Đã cho tôi một thời gian để tìm ra lý do tại sao sắp xếp theo thứ tự abc không đưa ra kết quả mong đợi. Tôi đã thay đổi mã ở trên để trả về những điều sau: return strcmp (strtolower ($ a ["name"]), strtolower ($ b ["name"])); – Andrew

9

usort là bạn của bạn:

function cmp($a, $b) 
{ 
     return strcmp($a["name"], $b["name"]); 
} 

usort($array, "cmp"); 
+0

cảm ơn bạn rất nhiều –

Các vấn đề liên quan