在PHP中可以做这样的事情吗?你会如何写一个函数?这是一个例子.订单是最重要的.
$customer['address'] = '123 fake st';
$customer['name'] = 'Tim';
$customer['dob'] = '12/08/1986';
$customer['dontSortMe'] = 'this value doesnt need to be sorted';
Run Code Online (Sandbox Code Playgroud)
我想做点什么
$properOrderedArray = sortArrayByArray($customer, array('name', 'dob', 'address'));
Run Code Online (Sandbox Code Playgroud)
因为最后我使用foreach()并且它们的顺序不正确(因为我将值附加到需要按正确顺序排列的字符串中,并且我事先并不知道所有数组键/值).
我查看了PHP的内部数组函数,但似乎只能按字母顺序或数字顺序排序.
我有以下数组(JSON-ified以方便查看):
{
"23": {
"price": "33.99"
},
"38": {
"price": "30.86"
},
"51": {
"price": "31.49"
}
}
Run Code Online (Sandbox Code Playgroud)
我想通过price键对它进行排序,但我希望结果也返回包含价格的元素的键,所以像这样:
{
"38": {
"price": "30.86"
},
"51": {
"price": "31.49"
},
"23": {
"price": "33.99"
}
}
Run Code Online (Sandbox Code Playgroud)
我的usort回调是这样的:
private function _price_sort($a, $b)
{
if ($a['price'] == $b['price']) {
return 0;
}
return ($a['price'] < $b['price']) ? -1 : 1;
}
Run Code Online (Sandbox Code Playgroud)
...以正确的顺序返回数组,但没有元素容器:
[
{
"price": "30.86"
},
{
"price": "31.49"
},
{
"price": "33.99"
}
]
Run Code Online (Sandbox Code Playgroud)
我是否需要在回调函数中执行某些操作或者使用以保留密钥?