0

キー値に対してチェックする必要がある配列を介して for ループを実行する必要があるとしましょう。一致しない要素の前に、一致しない配列要素を出力したいと思います。

したがって、下の配列を使用して (わかりやすくするために追加の値を追加)、次のように出力したいと思います。との値を一致させる必要がcurrent_tagありlast_tagます。それらが一致しない場合、そのキーを他のキーよりも先に出力する必要があります。

望ましい結果

TEST2

TEST1 
TEST3 
TEST4 

配列

array(2) {
    [0]=>
    array(3) {
        ["name"]=>
            string(3) "TEST1"
        ["current_tag"]=>
            string(13) "20121129_TEST1"
        ["last_tag"]=>
            string(13) "20121129_TEST1"
    }
    [1]=>
    array(3) {
        ["name"]=>
            string(3) "TEST2"
        ["current_tag"]=>
            string(13) "20121205_TEST2"
        ["last_tag"]=>
            string(13) "20121129_TEST2"
    }
    ...
    ...
    ...
    ...
}
4

1 に答える 1

1

配列をusort並べ替えるには、カスタム コールバックを使用して配列を作成します。nameソート後、すべてのキーを印刷できます。

usort($array, function($a, $b) {
    $match_a = $a['current_tag'] == $a['last_tag'];
    $match_b = $b['current_tag'] == $b['last_tag'];

    if ($match_a && $match_b) {
        return 0;
    } elseif ($match_a && !$match_b) {
        return 1;
    } elseif (!$match_a && $match_b) {
        return -1;
    }
});

array_walk($array, function($item) {
    echo $item['name'];
});

順序が間違っている場合は、1 と -1 の戻り値を入れ替えるだけです。

于 2012-12-06T20:51:18.463 に答える