使用名称对数组进行排序
我有一个数组。

 array(0 => Mr. Bala ,1 => Mr. Santhosh, 2 => Mrs. Camel,3 => Mrs. Vinoth);

仅根据名称按升序对其进行排序

我的预期输出是
array(
  0 => Mr. Bala,
  1 => Mrs. Camel,
  2 => Mr. Santhosh,
  3 => Mr. Vinoth,
);

最佳答案

只是我自己的旋转,应该更灵活一点。 Working Demo

usort($data, 'sortByName');

function sortByName($a, $b) {
    $remove = [' ', '.', 'Mrs', 'Miss', 'Ms', 'Master', 'Dr', 'Mr'];

    $a = str_replace($remove, '', $a);
    $b = str_replace($remove, '', $b);

    return strcasecmp($a, $b);
}

唯一需要注意的是 $titles 需要按特定顺序排列,因为 Mrs 必须始终在 Mr 之前,因为 MrMrs 内,因此如果您切换顺序,则 Mr 可能会被带走,留下流氓 S
相信这应该适合你想要的,任何问题让我知道。

编辑 更新。

关于php - 如何用PHP对数组进行排序,忽略(Mr, Mrs) 或某些文章,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37278102/

10-10 13:39