PHP二維數組去重演算法

來源:互聯網
上載者:User
需求

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

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" }}

總結

需求已搞定,只要遇到數組,我們第一個想到的除了現成的PHP方法之外,就是迴圈,不管是foreach還是for,上面例子是我項目處理的一個自訂表格單編輯的小段過程,希望對大家思路有協助。

聯繫我們

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