處理字串拼接成想要的數組

來源:互聯網
上載者:User

標籤:nbsp   str   func   替換   迴圈   col   cti   bst   []   

$aa =Array(
 [R,99] => B [I,100] => A [A,101] => D [S,102] => C [E,103] => D [C,104] => B [R,105] => A);

$cc = array( "A" =>"1", "B" => "2", "C" => "3", "D" => "4", "E" => "5", "F" => "6", "G" => "7", );
需求:::將aa數組裡面的 r=b,然後匹配cc數組裡面的值,b對應的值為2,如果aa裡面有兩個r那麼將他們的值相加

$str ="";foreach ($aa as $key => $v) {$kk = substr($key,0,1);$str .= substr($key,0,1)."=".$cc[$v].",";}

 得到  str=‘ R=2,I=1,A=4,S=3,E=4,C=2,R=1‘; 

然後將str這個字串處理成

Array(    [R] => 3    [I] => 1    [A] => 4    [S] => 3    [E] => 4    [C] => 2)
這種格式,:注意,這裡拼接數組的時候,鍵名如果相同會被替換,需求是,如果鍵名相同,則索引值相加
思路:
先將str以逗號打散成數組
Array(    [0] => R=2    [1] => I=1    [2] => A=4    [3] => S=3    [4] => E=4    [5] => C=2    [6] => R=1)

迴圈這個數組,然後再迴圈裡再將新數組的值,再次以=打散成新數組,
Array(    [0] => R    [1] => 2)
Array(    [0] => I    [1] => 1)
Array(    [0] => A    [1] => 4)
Array(    [0] => S    [1] => 3)
Array(    [0] => E    [1] => 4)
Array(    [0] => C    [1] => 2)
Array(    [0] => R    [1] => 1)

然後將新數組的0下標的值作為鍵名組成新數組,如果鍵名相同,索引值相加,否則不用
代碼:
$str = rtrim($str,",");$arr1 = explode(‘,‘,$str);$arr2 =[];foreach ($arr1 as $k => $va) {    $arr3 = explode(‘=‘,$va);    aaa($arr3);    if(isset($arr2[$arr3[0]])) {        $arr2[$arr3[0]] += $arr3[1];    }else{        $arr2[$arr3[0]] = $arr3[1];    }}

 

function aaa($ccd){
echo "<pre>";
print_R($ccd);
echo "</pre>";

}

最佳化思路:不用再拼接字串,直接判斷相加
$aa = Array(    [R,99] => B    [I,100] => A    [A,101] => D    [S,102] => C    [E,103] => D    [C,104] => B    [R,105] => A);
$cc = Array(    [A] => 1    [B] => 2    [C] => 3    [D] => 4    [E] => 5    [F] => 6    [G] => 7);

$arr5 = [];foreach ($aa as $key => $v) {$kk = substr($key,0,1);if(isset($arr5[$kk])){//如果鍵名存在,吧值相加$arr5[$kk] += $cc[$v];}else{$arr5[$kk] = $cc[$v];}}

  








處理字串拼接成想要的數組

聯繫我們

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