PHP二維數組去重演算法圖文詳解

來源:互聯網
上載者:User
本文給大家分享的代碼是php實現的二維數組根據索引值合并並去重複的演算法,非常實用,有需要的小夥伴可以參考下

需求

現在有下面一組二維數組:


array(8) { [0]=> array(2) {  ["name"]=>  string(4) "name"  ["value"]=>  string(6) "青葉" } [1]=> array(2) {  ["name"]=>  string(5) "phone"  ["value"]=>  string(11) "13812341234" } [2]=> array(2) {  ["name"]=>  string(12) "fileds_507[]"  ["value"]=>  string(12) "我是青葉" } [3]=> array(2) {  ["name"]=>  string(12) "fileds_508[]"  ["value"]=>  string(6) "合肥" } [4]=> array(2) {  ["name"]=>  string(12) "fileds_509[]"  ["value"]=>  string(3) "男" } [5]=> array(2) {  ["name"]=>  string(12) "fileds_510[]"  ["value"]=>  string(6) "足球" } [6]=> array(2) {  ["name"]=>  string(12) "fileds_510[]"  ["value"]=>  string(6) "棒球" } [7]=> array(2) {  ["name"]=>  string(12) "fileds_511[]"  ["value"]=>  string(16) "2016-12-15T11:15" }}


需要將處於第二維鍵名為name,其值相同的數組的value合并,形成一個新的數組。

比如上面代碼中的name為fileds_510的兩個二維數組,就應該合并為一個值為足球,棒球的數組。

思路

提到數組,再PHP中我們首先想到了迴圈,那麼這裡顯然比較適合使用for迴圈處理,與冒泡排序相似,一個個比較,最好處理。

代碼

代碼如下:


$public_info = 數組;for ($i=0;$i<count($public_info);$i++) {  for ($j=$i+1;$j<count($public_info);$j++) {    if ($public_info[$j]['name'] == $public_info[$i]['name']) {      $public_info[$i]['value'] .= ',' . $public_info[$j]['value'];      unset($public_info[$j]);    }  }}


執行結果:


array(7) { [0]=> array(2) {  ["name"]=>  string(4) "name"  ["value"]=>  string(6) "青葉" } [1]=> array(2) {  ["name"]=>  string(5) "phone"  ["value"]=>  string(11) "13812341234" } [2]=> array(2) {  ["name"]=>  string(12) "fileds_507[]"  ["value"]=>  string(12) "我是青葉" } [3]=> array(2) {  ["name"]=>  string(12) "fileds_508[]"  ["value"]=>  string(6) "合肥" } [4]=> array(2) {  ["name"]=>  string(12) "fileds_509[]"  ["value"]=>  string(3) "男" } [5]=> array(2) {  ["name"]=>  string(12) "fileds_510[]"  ["value"]=>  string(13) "足球,棒球" } [7]=> array(2) {  ["name"]=>  string(12) "fileds_511[]"  ["value"]=>  string(16) "2016-12-15T11:15" }}


以上就是本文的全部內容,希望對大家的學習有所協助。


聯繫我們

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