【问题标题】:PHP array sort by value [duplicate]PHP数组按值排序[重复]
【发布时间】:2017-08-01 16:32:21
【问题描述】:

我已经更新了我的问题,所以请检查一下。

我有一个如下数组:

$array = [
  0 => [
    "term" => "DECATHLON",
    "count" => 7,
  ],
  1 => [
    "term" => "babywalz",
    "count" => 6,
  ],
  2 => [
    "term" => "Douglas",
    "count" => 3,
  ],
  3 => [
     "term" => "NETFLIX",
     "count" => 2,
  ],
  4 => [
    "term" => "zalando",
    "count" => 2,
  ],
  5 => [
    "term" => "Ernsting's family",
    "count" => 1,
  ],
  6 => [
    "term" => "Spotify",
    "count" => 1,
  ],
  7 => [
    "term" => "eventim",
    "count" => 1,
  ]
];

我想像这样对数组进行排序:

$array = [
        1 => [
            "term" => "babywalz",
            "count" => 6,
        ],
        0 => [
            "term" => "DECATHLON",
            "count" => 7,
        ],
        2 => [
            "term" => "Douglas",
            "count" => 3,
        ],
        5 => [
            "term" => "Ernsting's family",
            "count" => 1,
        ],
        7 => [
            "term" => "eventim",
            "count" => 1,
        ],
        3 => [
            "term" => "NETFLIX",
            "count" => 2,
        ],
        6 => [
            "term" => "Spotify",
            "count" => 1,
        ],
    ];

任何建议都会有所帮助。我使用了 asort(),但它没有按我的意愿工作。我也尝试过使用 natcasesort()。

【问题讨论】:

  • 伴侣你在回答后完全重组了你的问题

标签: php


【解决方案1】:

感谢您的宝贵帮助。我已经解决了我的问题如下:

usort($value, function($x, $y) { 
    return strcasecmp($x['term'], $y['term']); 
});

【讨论】:

    【解决方案2】:

    这将对您的数组进行不区分大小写的排序:

    natcasesort($array);
    

    所以:

    natcasesort($array);
    echo "Natural order sorting (case-insensitive):\n";
    print_r($array);
    

    【讨论】:

    • 这个答案在 OP 完全重新编辑问题之前有效;)
    【解决方案3】:

    您必须使用natcasesort,查找更多详细信息here

    $array = [    'D', 'a', 'Z', 'f'];    
    natcasesort ($array);     
    print_r($array);
    

    输出

    Array ( [1] => a [0] => D [3] => f [2] => Z )
    

    【讨论】:

      【解决方案4】:

      您应该使用usortcustom user function

      usort($array, function($a, $b){ 
          return strnatcmp (strtolower($a["term"]), strtolower($b["term"]));
      });
      

      【讨论】:

        【解决方案5】:

        像这样使用函数sort():sort($array)。

        查看文档:array sorting

        【讨论】:

          【解决方案6】:
          natcasesort($array);
          

          自然顺序排序(不区分大小写)

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2013-03-11
            • 1970-01-01
            • 1970-01-01
            • 2012-07-06
            • 1970-01-01
            • 2018-11-11
            • 2011-06-02
            • 2019-12-28
            相关资源
            最近更新 更多