我在排序一個包含人名和一些信息的多維數組。我使用asort($obj)
按字母順序排列它們的名字(它首先出現)。它工作的很好,只是現在我需要按姓氏排序,而不是先排序。然而,例如整個名稱「Joe Smith」是在「名稱」鍵下。我需要它按姓氏排序,而不是第一個。我怎樣才能做到這一點?按字母順序排列數組第二個字
編輯 看來我錯了。最簡單的方法是簡單地將數據庫中的名字和姓氏分配給單獨的字段,而不是相同的字符串。
我在排序一個包含人名和一些信息的多維數組。我使用asort($obj)
按字母順序排列它們的名字(它首先出現)。它工作的很好,只是現在我需要按姓氏排序,而不是先排序。然而,例如整個名稱「Joe Smith」是在「名稱」鍵下。我需要它按姓氏排序,而不是第一個。我怎樣才能做到這一點?按字母順序排列數組第二個字
編輯 看來我錯了。最簡單的方法是簡單地將數據庫中的名字和姓氏分配給單獨的字段,而不是相同的字符串。
使用usort
:
function cmp($a, $b)
{
list($firstNameA, $lastNameA) = explode(" ", $a["name"], 2);
list($firstNameB, $lastNameB) = explode(" ", $b["name"], 2);
return strcmp($lastNameA, $lastNameB);
}
usort($array, "cmp");
不,比以前的答案如此不同。但是,在這種情況下,使用自然算法可能是一個不錯的選擇。
$array = array(
array("first", "last"),
array("first2", "last2")
); //For an array of such format
function compare_last($a, $b) { return strnatcmp($a[1], $b[1]); }
usort($array, 'compare_last');
對,或http://php.net/uasort如果鑰匙很重要 – mishu
我知道如何使用這些......但那不是問題。問題是,名字和姓氏基本上只是一個字符串。我需要能夠遍歷字符串,找到姓氏,並通過該姓氏對其進行排序。 – mdance
不可能:[名字很難](http://timothy.green.name/links/names-are-hard)。詢問任何圖書管理員或參與書目的任何人。 – TRiG