2017-06-14 18 views
-1

基本上,我只是想給數組排序,看起來像這樣:我想的名字,然後再ID進行排序,並應該是這樣的PHP - 如何使用它的鍵在PHP中對數組進行排序?

$a[] = array("id"=>'1', "name"=>'A', "text"=>'person a'); 
    $a[] = array("id"=>'2', "name"=>'B', "text"=>'person B'); 
    $a[] = array("id"=>'3', "name"=>'B', "text"=>'person B 2'); 
    $a[] = array("id"=>'8', "name"=>'A', "text"=>'person A 2'); 
    $a[] = array("id"=>'4', "name"=>'C', "text"=>'person C'); 
    $a[] = array("id"=>'6', "name"=>'B', "text"=>'person B 3'); 

sorted

據我所知,ksort可以按here所述按鍵進行排序。但是這個例子只是一個簡單的關聯數組。

+0

爲什麼它downvoted?是因爲形象還是其他? – mantequilla

回答

0

使用usort()功能,你可以提供一個用戶定義的比較函數:

<?php 
$data = [ 
    ["id"=>'1', "name"=>'A', "text"=>'person a'], 
    ["id"=>'2', "name"=>'B', "text"=>'person B'], 
    ["id"=>'3', "name"=>'B', "text"=>'person B 2'], 
    ["id"=>'8', "name"=>'A', "text"=>'person A 2'], 
    ["id"=>'4', "name"=>'C', "text"=>'person C'], 
    ["id"=>'6', "name"=>'B', "text"=>'person B 3'] 
]; 
usort($data, function($e1, $e2) { 
    return ($e1['name']==$e2['name']) ? 
     $e1['id'] > $e2['id'] : 
     $e1['name'] > $e2['name']; 
}); 
var_dump($data); 

輸出顯然是:

array(6) { 
    [0]=> 
    array(3) { 
    ["id"]=> 
    string(1) "1" 
    ["name"]=> 
    string(1) "A" 
    ["text"]=> 
    string(8) "person a" 
    } 
    [1]=> 
    array(3) { 
    ["id"]=> 
    string(1) "8" 
    ["name"]=> 
    string(1) "A" 
    ["text"]=> 
    string(10) "person A 2" 
    } 
    [2]=> 
    array(3) { 
    ["id"]=> 
    string(1) "2" 
    ["name"]=> 
    string(1) "B" 
    ["text"]=> 
    string(8) "person B" 
    } 
    [3]=> 
    array(3) { 
    ["id"]=> 
    string(1) "3" 
    ["name"]=> 
    string(1) "B" 
    ["text"]=> 
    string(10) "person B 2" 
    } 
    [4]=> 
    array(3) { 
    ["id"]=> 
    string(1) "6" 
    ["name"]=> 
    string(1) "B" 
    ["text"]=> 
    string(10) "person B 3" 
    } 
    [5]=> 
    array(3) { 
    ["id"]=> 
    string(1) "4" 
    ["name"]=> 
    string(1) "C" 
    ["text"]=> 
    string(8) "person C" 
    } 
} 
+0

雖然按名稱排序後,它不是按id排序的。 – mantequilla

+0

id排序降序 – mantequilla

+0

感謝您的反饋,如何在按名稱排序後按id升序進行排序? – mantequilla

相關問題