按值对 PHP 数组进行排序

3
我已更新了我的问题,请查看。
我有一个如下的数组:
$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()。

伙计,你在回答后完全重构了你的问题。 - mayersdesign
6个回答

4
感谢您的宝贵帮助。我已经按照以下方式解决了我的问题:
usort($value, function($x, $y) { 
    return strcasecmp($x['term'], $y['term']); 
});

1
这将以非大小写敏感的方式对您的数组进行排序:
natcasesort($array);

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

这个答案在问题完全重新编辑之前是有效的 ;) - mayersdesign

0

你需要使用natcasesort,更多细节请查看这里

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

输出

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

0

你应该使用 usort自定义用户函数

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

-1
使用函数sort(),如下所示:sort($array)。
查看文档:数组排序

-1
natcasesort($array);

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接