2017-06-14 78 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