【发布时间】:2017-04-02 04:45:36
【问题描述】:
我有两个键值数组。两个数组中的键是相同的,但是在第一个数组中它们指向一个字符串标签,而在第二个数组中它们指向一个整数:
$labelArray (size=n)
ID_1 => LABEL_1
ID_2 => LABEL_2
...up to n items
$countArray (size=n)
ID_1 => Count_1
ID_2 => Count_1
...up to n items
我喜欢按 countArray 的值对 labelArray 进行排序。到目前为止,我只提出了一个非常复杂的解决方案,我分别对键进行排序,然后像这样创建一个新数组:
// my current (very convoluted solution)
$keys = array_keys($labelArray);
$orderByCount = function($a, $b) use ($countArray ) {
return $countArray [$b] - $countArray [$a];
};
usort($keys, $orderByCount);
$labelArrayNewOrder = array();
foreach ($keys as $key) {
$labelArrayNewOrder[$key] = $labelArray[$key];
}
有什么解决方案可以让我不必创建新数组,只需对现有的 labelArray 重新排序?
这应该是一个常见的问题,但我在网上找不到解决方案。只有指向多维数组排序的指针 (How do I Sort a Multidimensional Array in PHP) 但我认为我的问题不同。
【问题讨论】: