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 に答える