PHP:如何分配和维护密钥?

2022-08-30 14:46:14

我有以下数组(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 中执行某些操作来保留密钥吗?


答案 1

使用 uasort() 来维护你的密钥

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


答案 2