>我正在对一个多维数组进行排序,其中包含人名和一些信息。我正在使用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');