【问题标题】:PHP insenstivite multisortPHP 不敏感多排序
【发布时间】:2018-04-08 22:45:39
【问题描述】:

我正在使用这个函数对我的多维数组进行排序:

function array_sort_by_column(&$arr, $col, $dir = SORT_ASC) {
    $sort_col = array();
    foreach ($arr as $key=> $row) {
        $sort_col[$key] = $row[$col];
    }

    array_multisort($sort_col, $dir, $arr);
}

然后像这样调用它:

array_sort_by_column($items, 'name', SORT_DESC);

现在一般的排序工作,但有一个问题:它区分大小写,所以如果我有一个列表:

  • 苹果
  • 橙色
  • 香蕉

香蕉不会排在列表(或数组)的第二位,而是排在第一位,所以首先是以大写字母开头的单词,然后是其他单词。

所以上面列表的预期行为是

  • 苹果
  • 香蕉
  • 橙色

实际输出为:

  • 香蕉
  • 苹果
  • 橙色

我可以改变什么来做到这一点不区分大小写?

【问题讨论】:

标签: php arrays sorting multidimensional-array


【解决方案1】:

应该这样做:

array_multisort($sort_col, $dir|SORT_NATURAL|SORT_FLAG_CASE, $arr);

来自 php 文档:

SORT_FLAG_CASE - 可以与 SORT_STRING 组合(按位或)或 SORT_NATURAL 对字符串进行不区分大小写的排序

【讨论】:

    猜你喜欢
    • 2010-11-04
    • 2011-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-12
    • 1970-01-01
    • 1970-01-01
    • 2021-04-12
    相关资源
    最近更新 更多