php二維數組找出相同的key,拼接value

來源:互聯網
上載者:User
array(    array(        "ShopID" => "C024",        "Name" => "a",        "ListNo" => 13343    ),    array(        "ShopID" => "C024",        "Name" => "c",        "ListNo" => 13343    ),    array(        "ShopID" => "C024",        "Name" => "b",        "ListNo" => 13342    ),    array(        "ShopID" => "C024",        "Name" => "d",        "ListNo" => 13342    ),    array(        "ShopID" => "C024",        "Name" => "e",        "ListNo" => 13346    ),    array(        "ShopID" => "C024",        "Name" => "f",        "ListNo" => 13346    ));

ListNo相同的值重新組織成一個數組,實現的效果:

array("ShopID" => "C024", "Name" => array("a", "c"), "ListNo" = 13343);

回複內容:

array(    array(        "ShopID" => "C024",        "Name" => "a",        "ListNo" => 13343    ),    array(        "ShopID" => "C024",        "Name" => "c",        "ListNo" => 13343    ),    array(        "ShopID" => "C024",        "Name" => "b",        "ListNo" => 13342    ),    array(        "ShopID" => "C024",        "Name" => "d",        "ListNo" => 13342    ),    array(        "ShopID" => "C024",        "Name" => "e",        "ListNo" => 13346    ),    array(        "ShopID" => "C024",        "Name" => "f",        "ListNo" => 13346    ));

ListNo相同的值重新組織成一個數組,實現的效果:

array("ShopID" => "C024", "Name" => array("a", "c"), "ListNo" = 13343);

    $arr = array(        array(            "ShopID" => "C024",            "Name"   => "a",            "ListNo" => 13343        ),        array(            "ShopID" => "C024",            "Name"   => "c",            "ListNo" => 13343        ),        array(            "ShopID" => "C024",            "Name"   => "b",            "ListNo" => 13342        ),        array(            "ShopID" => "C024",            "Name"   => "d",            "ListNo" => 13342        ),        array(            "ShopID" => "C024",            "Name"   => "e",            "ListNo" => 13346        ),        array(            "ShopID" => "C024",            "Name"   => "f",            "ListNo" => 13346        )    );    $lists = array_column($arr, 'ListNo');    $lists = array_flip(array_flip($lists));    $result = array();    foreach ($lists as $k => $v) {        $res = array();        foreach ($arr as $key => $val) {            if ($val['ListNo'] == $v) {                if (count($res) == 0) {                    $res = $val;                } else {                    if ($res['ShopID'] != $val['ShopID']) {                        if (!is_array($res['ShopID'])) {                            $res['ShopID'] = array($res['ShopID'], $val['ShopID']);                        } else {                            $res['ShopID'][] = $val['ShopID'];                        }                    }                    if ($res['Name'] != $val['Name']) {                        if (!is_array($res['Name'])) {                            $res['Name'] = array($res['Name'], $val['Name']);                        } else {                            $res['Name'][] = $val['Name'];                        }                    }                }            }//        var_dump($res);        }        $result[] = $res;    }    var_dump($result);
結果如下:array (size=3)

0 =>

array (size=3)  'ShopID' => string 'C024' (length=4)  'Name' =>     array (size=2)      0 => string 'a' (length=1)      1 => string 'c' (length=1)  'ListNo' => int 13343

1 =>

array (size=3)  'ShopID' => string 'C024' (length=4)  'Name' =>     array (size=2)      0 => string 'b' (length=1)      1 => string 'd' (length=1)  'ListNo' => int 13342

2 =>

array (size=3)  'ShopID' =>     array (size=2)      0 => string 'C024' (length=4)      1 => string 'C025' (length=4)  'Name' =>     array (size=3)      0 => string 'e' (length=1)      1 => string 'f' (length=1)      2 => string 'g' (length=1)  'ListNo' => int 13346

遍曆數組,遍曆時把ListNo作為Key,然後判斷下如果isset同樣的Key就對Name做合併作業,沒有就直接寫入,到最後array_merge一下清除掉數組的Key

  • 相關文章

    聯繫我們

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