0

我有一个这样的数组:

$sub = array(
   'add' => 'Add New',
   'default' => 'Home Page',
   'remove' => 'Remove Old'
);

这是在其他地方建造的,但它是按字母顺序进行的。无论如何可以轻松地对此进行排序,因此默认值始终位于首位?

4

6 回答 6

3

我不认为你是在排序之后

$sub = array(
   'add' => 'Add New',
   'default' => 'Home Page',
   'remove' => 'Remove Old'
);
$default = array('default' => $sub['default']);

unset($sub['default']);
$sub = $default + $sub;
print_r($sub);
于 2012-11-19T23:40:24.890 回答
3

试试这个

$sub = array(
   'add' => 'Add New',
   'default' => 'Home Page',
   'remove' => 'Remove Old'
);

function defaultSort($a, $b){
    if ($a == $b) {
        return 0;
    }
    return ($a == 'default') ? -1 : 1;
}

uksort($sub, 'defaultSort');

var_dump($sub);
于 2012-11-19T23:48:09.783 回答
2

删除它然后重新添加

$v = $sub['default'];
unset($sub['default']);
$sub['default'] = $v;
于 2012-11-19T23:40:02.700 回答
2
$default = $sub['default'];
unset($sub['default']);
$sub = array_reverse($sub);
$sub['default'] = $default;
$sub = array_reverse($sub);
于 2012-11-19T23:40:37.760 回答
1

uksort应该是你所追求的

于 2012-11-19T23:38:23.903 回答
1

你不需要排序 - 它已经排序。只需移动您想要的元素。

$tmp = array('default' => $sub['default']) ;
unset( $sub['default']) ;
array_unshift($sub, $tmp);
于 2012-11-19T23:49:14.963 回答