php按照指定順序的排序

來源:互聯網
上載者:User

標籤:class   word   number   因此   body   ber   sea   第一個   span   

   今天遇到一個需求,需要對一個數組按指定順序進行排序,最終查到個解決辦法:

    $sort_rule = [5,7,3,1,8,2];

     $arr = [1,2,3,5,7,8];  

//需求,將數組$arr以$sort_rule指定的順序進行排序

 解決方式1

   $a = array_intersect($sort_rule,$arr);

   $b = array_diff($arr,$sort_rule);

   $re = array_merge($a, $b);

 array_intersect函數的作用是基於第一個數組擷取兩個數組的交集,如上述例子

   array_intersect($sort_rule, $arr);

   先根據$sort_rule中的第一個元素從$arr中找相同的元素,如果有,則取出, 沒有則找第二個元素,依次類推

   因此,最後擷取的交集數組的順序,和$sort_sule數組的順序是一模一樣的 也就實現了按sort_rule指定的順序進行排序的要求

解決方式2

usort($arr, function ($a, $b) use ($rule) {

return (array_search($a, $rule) < array_search($b, $rule)) ? -1 : 1;

//將定序用use傳入閉包函數,如果元素$a在$rule中的位置小於$b在$rule中的位置,則返回-1,反之返回1, //usort函數會根據閉包函數的傳回值將$a和$b的位置進行調整 });

 

php按照指定順序的排序

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.