我需要对一个数组进行排序,前四个元素将手动定义,其余按字母顺序定义。我怎样才能做到这一点?
$array = array('navigation' => array('label' => 'nav'),
'sponsors' => array('label' => 'spo'),
'points' => array('label' => 'poi'),
'direction' => array('label' => 'dir'),
'time' => array('label' => 'tim'),
'statistics' => array('label' => 'sta'),
'height' => array('label' => 'hei'),
'opacity' => array('label' => 'opa'),
'saturation' => array('label' => 'sat'),
'size' => array('label' => 'size'),
'attribute' => array('label' => 'att')
);
前四个元素应为大小,不透明度,时间,分数,其余元素应按字母顺序排列。
修改
评论要求显示我的尝试。我尝试用uasort函数对它进行排序,但它根本不起作用。我也不知道为什么。
$order = array('size', 'opacity', 'time', 'points');
uasort($array, function ($a, $b) use ($order) {
$pos_a = array_search($a, $order);
$pos_b = array_search($b, $order);
return $pos_a - $pos_b;
});
答案 0 :(得分:2)
您可以从阵列中删除这四个项目(如果需要,可以制作副本)并按键排序:
$temp = array();
foreach (array('size', 'opacity', 'time', 'points') as $key) {
$temp[$key] = $array[$key];
unset($array[$key]);
}
ksort($array);
$result = array_merge($temp, $array);