如何按保留键的姓氏对名称数组进行排序

Sim*_*urn 4 php arrays sorting

我有一个数组如下:

Array(
    [27] => 'Sarah Green',
    [29] => 'Adam Brown',
    [68] => 'Fred Able'
);
Run Code Online (Sandbox Code Playgroud)

我想按姓氏排序并保留密钥:

Array(
    [68] => 'Fred Able'
    [29] => 'Adam Brown',
    [27] => 'Sarah Green'
);
Run Code Online (Sandbox Code Playgroud)

有些名字可能有两个以上的名字,但它总是我想要排序的最后一个名字.

在PHP中执行此操作的最佳方法是什么?

Ry-*_*Ry- 9

您可以使用该uasort功能,该功能允许您指定自定义排序方法,同时还保留键:

<?php
// A function to sort by last name.
function lastNameSort($a, $b) {
    $aLast = end(explode(' ', $a));
    $bLast = end(explode(' ', $b));

    return strcasecmp($aLast, $bLast);
}

// The array of data.
$array = array(
    27 => 'Sarah Green',
    29 => 'Adam Brown',
    68 => 'Fred Able'
);

// Perform the sort:
uasort($array, 'lastNameSort');

// Print the result:
print_r($array);
?>
Run Code Online (Sandbox Code Playgroud)

这是一个演示.