次のような配列があります。
$sub = array(
'add' => 'Add New',
'default' => 'Home Page',
'remove' => 'Remove Old'
);
これは別の場所で作成されていますが、アルファベット順に作成されています。これを簡単に並べ替えて、デフォルトが常に一番上になるようにする方法はありますか?
私はあなたがソートした後だとは思わない
$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);
これを試して
$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);
削除してから再度追加してください
$v = $sub['default'];
unset($sub['default']);
$sub['default'] = $v;
$default = $sub['default'];
unset($sub['default']);
$sub = array_reverse($sub);
$sub['default'] = $default;
$sub = array_reverse($sub);
uksortはあなたが求めているものであるべきです
並べ替える必要はありません - 既に並べ替えられています。必要な要素を移動するだけです。
$tmp = array('default' => $sub['default']) ;
unset( $sub['default']) ;
array_unshift($sub, $tmp);