2016-04-28 24 views
0

こんにちは、ソート多次元配列

私はこのような機能を持っている:

function column_links() { 
$column = scandir("content"); 
foreach ($column as $value) { 
    $stvalue = str_replace(".php", "", $value); 
    echo "<a href=\"{$stvalue}\">{$GLOBALS['tags'][$stvalue][title]}</a>"; 
} 
} 

をし、これが私の変数です:

define('title', 0); 
define('desc', 1); 
define('order', 2); 

$tags = array(
    'index' => array('My Page', 'this is a description', '1'), 
    'about' => array('About', 'this is a description', '2'), 
    'sitemap' => array('Site Map', 'this is a description', '3')); 

私は、ソートしたいですファイル名ではなくオーダーでリンクを作成したので、私のhtmlは次のようになります:

私はarray_multisortがそのトリックを行うと思ったが、どこに置くべきか把握できない。どんなアイデアですか?

ありがとうございます。

答えて

0

配列関数usortを使用して、独自のソートを定義することができます。

どのように動作するかは、配列のソート方法を決定する独自の関数を記述することです。この関数は、第1引数が第2引数とどのように比較されるかを決定するために、0より小さい、等しい、または大きい整数を返す必要があります。例えば

私は['order']キーを比較order_sortというカスタム関数を記述します。

function order_sort($a, $b) { 
    if ($a['order'] > $b['order']) 
     return 1; 
    if ($a['order'] < $b['order']) 
     return -1; 
    return 0; 
} 

次に、私のカスタム関数を使ってソートするために私の配列のusortを呼び出すことができます。

usort($tags, 'order_sort'); 

そのキーは破棄され、配列は['order']でソートされます。

あなたのコードはちょっと混乱しています。私はあなたの例を正しく理解してくれることを願っています。そうでない場合は、私の例があなた自身を書くのを助けてくれることを願っています!

+0

私のコードのどの部分があなたを混乱させるのですか? –

+0

私はちょうど眠くて、あなたの配列が実際にどのように見えるかを考え出すのが大変です。もう一度見てみると、私の例の[order]をちょうど[2]に置き換えることができます。しかし、論理はそこにあります。 –

+0

他にもありますか? –