3

私はこの配列を持っています:

$animals = array(
    '0' => array('name' => 'cat', 'order' => '2'),
    '1' => array('name' => 'dog', 'order' => '1'),
    '2' => array('name' => 'fish', 'order' => '3')
);

私はそれをこれに変えたい:

$animals = array(
    '1' => array('name' => 'dog', 'order' => '1'),
    '0' => array('name' => 'cat', 'order' => '2'),
    '2' => array('name' => 'fish', 'order' => '3')
);

ご覧のとおり、orderキーに基づいて並べ替えたいと思います。これを行う方法?

4

3 に答える 3

3

注文フィールドを読み取るユーザー定義のコールバックでPHP のネイティブ usort 関数を使用します。

インデックスの関連付けを維持することが重要な場合は、代わりにuasortを使用してください。

于 2013-06-12T20:26:13.397 に答える
1

array_multisort()を使用できます

 $animals = array(
    '0' => array('name' => 'cat', 'order' => '2'),
    '1' => array('name' => 'dog', 'order' => '1'),
    '2' => array('name' => 'fish', 'order' => '3')
);

$tmp = array();
foreach($animals as $k=>$r){
    $tmp[] = $r['order'];
}
array_multisort($tmp,SORT_ASC,$animals); // SORT_DESC to reverse

echo '<pre>',print_r($animals),'</pre>';
于 2013-06-12T20:28:12.360 に答える