0

インスタンスの場合、配列があります。

$unsorted = array(
    'desert' => array(
        'time' => '1339902235',
        'name' => 'desert.jpg'
    ),
    'sea' => array(
        'time' => '1339900801',
        'name' => 'sea.jpg'
    ),
    'mountain' => array(
        'time' => '1339902285',
        'name' => 'mountain.jpg'
    ),
);

配列を?の値でソートすることは可能でしょう$unsorted[$a]['time']か?

4

3 に答える 3

5

usortとのようなものを使用できますstrnatcasecmp

例えば:

function sort_2d_asc($array, $key) {
    usort($array, function($a, $b) use ($key) {
        return strnatcasecmp($a[$key], $b[$key]);
    });

    return $array;
}

function sort_2d_desc($array, $key) {
    usort($array, function($a, $b) use ($key) {
        return strnatcasecmp($b[$key], $a[$key]);
    });

    return $array;
}

$unsorted = array(
    'desert' => array(
        'time' => '1339902235',
        'name' => 'desert.jpg'
    ),
    'sea' => array(
        'time' => '1339900801',
        'name' => 'sea.jpg'
    ),
    'mountain' => array(
        'time' => '1339902285',
        'name' => 'mountain.jpg'
    ),
);

$sorted = sort_2d_asc($unsorted, 'time');
于 2012-06-17T03:44:54.053 に答える
0

usortキーは保持されないことに注意してください。
オリジナルのキーが必要な場合は、を使用する必要がありますuasort

于 2012-07-20T20:02:17.270 に答える
0

を使用できusortます。usort引数としてコールバックを取ります。また、時間を整数に変換します。それが整数だからです。

function compare($a,$b) {
     if( $a['time'] == $b['time'] ) {
         return 0;
     }

     return (intval($a['time']) < intval($b['time'])) ? -1 : 1;
}

usort( $unsorted, 'compare' );

// $unsorted is now sorted by time
于 2012-06-17T03:48:53.970 に答える