【问题标题】:How to sort an array by some specific key?如何按某个特定键对数组进行排序?
【发布时间】:2010-04-13 07:18:18
【问题描述】:

我有一个如下所示的数组。

$array[0]['keyword']  = 'cricket ';
$array[0]['noofhits'] = '26';

$array[1]['keyword']  = 'food  ';
$array[1]['noofhits'] = '17';

$array[2]['keyword']  = 'mypax';
$array[2]['noofhits'] = '22';

$array[3]['keyword']  = 'next';
$array[3]['noofhits'] = '22';

$array[4]['keyword']  = 'nextbutton';
$array[4]['noofhits'] = '22';

$array[5]['keyword']  = 'picture';
$array[5]['noofhits'] = '18';

我想使用 noofhits 对数组进行排序。我能怎么做?提前感谢您的建议。

对上一个很抱歉。感谢您的回答。

【问题讨论】:

  • 有了这个确切的代码,你只有一个元素的数组。
  • 我看到东西了吗..?您的代码正在覆盖其数据。

标签: php arrays sorting


【解决方案1】:

将usort 与自定义比较函数一起使用:

function cmp($a, $b) {
    return $a['noofhits'] - $b['noofhits'];
}
usort($array, 'cmp');

usort 期望比较函数返回三个不同的值:

  • 0 如果 a 和 b 相等
  • 如果 a 在 b 之前,则小于 0 的整数
  • 如果 b 在 a 之前,则为大于 0 的整数

所以我们可以简单地从 a 中减去 b 的值。如果 a 的值大于 b 的值,则减法得到一个正整数;如果 a 的值等于 b 的值,则返回 0;如果 a 的值小于 b 的值,则产生负值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-11
    • 2016-03-03
    • 1970-01-01
    • 2020-06-03
    • 2020-11-30
    • 1970-01-01
    • 2021-09-10
    • 1970-01-01
    相关资源
    最近更新 更多