PHP:如何使用和维护密钥


PHP: how to usort and maintain keys?

我有下面的数组(为了便于查看而对JSON进行了简化):

{
  "23": {
    "price": "33.99"
  },
  "38": {
    "price": "30.86"
  },
  "51": {
    "price": "31.49"
  }
}

我想按price键对其进行排序,但我希望结果也返回包含价格的元素的键,所以类似这样的东西:

{
  "38": {
    "price": "30.86"
  },
  "51": {
    "price": "31.49"
  },
  "23": {
    "price": "33.99"
  }
}

我的usort回调是这样的:

private function _price_sort($a, $b)
{
    if ($a['price'] == $b['price']) {
        return 0;
    }
    return ($a['price'] < $b['price']) ? -1 : 1;
}

它以正确的顺序返回数组,但没有元素容器:

[
  {
    "price": "30.86"
  },
  {
    "price": "31.49"
  },
  {
    "price": "33.99"
  }
]

我需要在回调函数或usort中做些什么来保留密钥吗?

使用uasort()维护密钥

此函数使用用户定义的比较函数对数组进行排序,以便数组索引保持与关联的数组元素的相关性。