2012-02-16 10 views
0

私は設定ファイルでも使用する多次元配列を持っています。ファイルも手動で編集されているので、一部のキーを固定したいと思っています。コードは、この配列で設定ファイルを読み込み、変更したり、キーなどを挿入してから元に戻します。私はキーをソートして保存するが、今は十分ではないことがわかった。PHPで配列インデックスをカスタムソートする方法は?

は、第1

  • とアルファベット順にソートされるキーの残りの部分として
  • 最初のキーとして常に

    • キー'full_name'キー'version'を持ってする方法はありますか?

    配列のサンプル....

    array (
        'skroob' => 
        array (
        'ssh' => 'skroob', 
        'codebase_path' => '/srv/www/htdocs/imacs/radek/4.0.1', 
        'ssh_status' => 'ok', 
        'version' => '4.0.1', 
        'ssh_last_access' => '2012-Feb-17 10:07:26', 
        'edu_url' => 'https://testing/imacs/radek/4.0.1', 
        'full_name' => 'skroob 4.0.1', 
    ), 
        'testing' => 
        array (
        'full_name' => 'My beautiful testing server (trunk)', 
        'version' => 'trunk', 
        'ssh' => 'testing', 
        'codebase_path' => '/srv/www/htdocs/imacs/radek/trunk', 
        'ssh_last_access' => '2012-Feb-17 10:07:26', 
        'ssh_status' => 'ok', 
    ), 
    ) 
    
  • 答えて

    1

    は、ここに1つの方法です。アルファベット順に並べ替えます。次に、配列を逆にしてfull_nameversion keysの設定を解除します。次に、それらのキーを再度追加するので、配列の最後に配置されます。最後に、配列を再び反転させます。ちょっとハッキーだけど、あなたが求めていることをやるより良い方法があるのか​​分からない。

    ksort($arr['skroob']); 
    
    $arr['skroob'] = array_reverse($arr['skroob']); 
    
    $version = $arr['skroob']['version']; 
    $full_name = $arr['skroob']['full_name']; 
    
    unset($arr['skroob']['full_name'], $arr['skroob']['version']); 
    
    $arr['skroob']['version'] = $version; 
    $arr['skroob']['full_name'] = $full_name; 
    
    $arr['skroob'] = array_reverse($arr['skroob']); 
    

    もう1つの解決方法は、uksortを使用して小さなコールバック関数を作成することです。それはおそらくもう少し専門的に見えます。

    +0

    涼しい、私は1つ持っている他の解決策はありません:-)ありがとうございます。 – Radek

    関連する問題