二維數組按值排序

來源:互聯網
上載者:User
關鍵字 php
//排序前$arr = array(    0 => array('id' => 'C160001-12'),    1 => array('id' => 'C160001-10'),    2 => array('id' => 'C160001-11'),    3 => array('id' => 'C160001-4'),    4 => array('id' => 'C160001-6'),    5 => array('id' => 'C160001-3'),    6 => array('id' => 'C160001-2'),    7 => array('id' => 'C160001-5'),    8 => array('id' => 'C160001-0'),    9 => array('id' => 'C160001-8'),    10 => array('id' => 'C160001-1'),    11 => array('id' => 'C160001-9'),    12 => array('id' => 'C160001-7'),    );
//排序後$arr = array(    0 => array('id' => 'C160001-0'),    1 => array('id' => 'C160001-1'),    2 => array('id' => 'C160001-2'),    3 => array('id' => 'C160001-3'),    4 => array('id' => 'C160001-4'),    5 => array('id' => 'C160001-5'),    6 => array('id' => 'C160001-6'),    7 => array('id' => 'C160001-7'),    8 => array('id' => 'C160001-8'),    9 => array('id' => 'C160001-9'),    10 => array('id' => 'C160001-10'),    11 => array('id' => 'C160001-11'),    12 => array('id' => 'C160001-12'),    );

求大神解答排序演算法!
---------------------------------------華麗的分割線------------------------------------------
雖然樓下給出了答案,但是本人的另一位朋友又給出了一種更簡便直觀的方法,如下:

usort($statementsample,function($a,$b){    return (int)substr($a['id'],8)>(int)substr($b['id'],8);            });

回複內容:

//排序前$arr = array(    0 => array('id' => 'C160001-12'),    1 => array('id' => 'C160001-10'),    2 => array('id' => 'C160001-11'),    3 => array('id' => 'C160001-4'),    4 => array('id' => 'C160001-6'),    5 => array('id' => 'C160001-3'),    6 => array('id' => 'C160001-2'),    7 => array('id' => 'C160001-5'),    8 => array('id' => 'C160001-0'),    9 => array('id' => 'C160001-8'),    10 => array('id' => 'C160001-1'),    11 => array('id' => 'C160001-9'),    12 => array('id' => 'C160001-7'),    );
//排序後$arr = array(    0 => array('id' => 'C160001-0'),    1 => array('id' => 'C160001-1'),    2 => array('id' => 'C160001-2'),    3 => array('id' => 'C160001-3'),    4 => array('id' => 'C160001-4'),    5 => array('id' => 'C160001-5'),    6 => array('id' => 'C160001-6'),    7 => array('id' => 'C160001-7'),    8 => array('id' => 'C160001-8'),    9 => array('id' => 'C160001-9'),    10 => array('id' => 'C160001-10'),    11 => array('id' => 'C160001-11'),    12 => array('id' => 'C160001-12'),    );

求大神解答排序演算法!
---------------------------------------華麗的分割線------------------------------------------
雖然樓下給出了答案,但是本人的另一位朋友又給出了一種更簡便直觀的方法,如下:

usort($statementsample,function($a,$b){    return (int)substr($a['id'],8)>(int)substr($b['id'],8);            });

function my_sort($a,$b){    $a = explode('-',$a['id'])[1];    $b = explode('-',$b['id'])[1];    if ($a==$b) return 0;    return ($a<$b)?-1:1;}usort($arr,'my_sort');

使用usort 方法比較靈活。

array_multisort() 函數 樣本如下

$data[] = array('volume' => 67, 'edition' => 2);$data[] = array('volume' => 86, 'edition' => 1);$data[] = array('volume' => 85, 'edition' => 6);$data[] = array('volume' => 98, 'edition' => 2);$data[] = array('volume' => 86, 'edition' => 6);$data[] = array('volume' => 67, 'edition' => 7);$type = array();foreach ($data as $key => $value) {    $type[] = $value['edition'];}array_multisort($type, SORT_ASC, $data);var_dump($data);
  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.