按字母顺序按第二个单词对数组进行排序

时间:2012-05-07 15:24:36

标签: php

我正在对包含人名和一些信息的多维数组进行排序。我正在使用asort($obj)按字母顺序对它们的名字进行排序(首先是它)。它工作得很好,只是现在我需要按姓氏排序,而不是先排名。但是,整个名称“Joe Smith”例如在“name”键下。我需要按姓氏排序,而不是先排序。我怎么能这样做?

修改 似乎我以错误的方式解决了这个问题。最简单的方法是简单地将DB中的名字和姓氏分配给单独的字段,而不是相同的字符串。

2 个答案:

答案 0 :(得分:3)

使用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");

答案 1 :(得分:0)

不是,与前一个答案不同。但是,在这种情况下,使用自然算法可能是一个不错的选择。

$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');