我有下面的数组(为了便于查看而对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()
维护密钥
此函数使用用户定义的比较函数对数组进行排序,以便数组索引保持与关联的数组元素的相关性。