目錄
回复讨论(解决方案)

合并数组

Jun 23, 2016 pm 01:15 PM
合併數組

 $A = array(        '1' => array(            'amount' => '100',            'amount1' =>'50',            'amount2' => '200',            'payment' => '12121212',            'payment1' => '12121212'        ),        '2' => array(            'amount' => '10',            'amount1' =>'5',            'amount2' => '20',            'payment' => '45454545',            'payment1' => '45454545'        )    );    $B = array(        '1' => array(            'user_money' => '100',            'user_money1' =>'50',            'user_money2' => '200'        ),        '2' => array(            'user_money' => '10',            'user_money1' =>'5',            'user_money2' => '20',            'user_money3' => '45454545'        )    );    foreach( $A as $k => $v){        foreach($B as $kk => $vv){            if($k = $kk){                $vvv[] = $v+$vv;            }        }    }    var_dump($vvv);
登入後複製

我这样写得出来的这样
array (size=4)  0 =>     array (size=8)      'amount' => string '100' (length=3)      'amount1' => string '50' (length=2)      'amount2' => string '200' (length=3)      'payment' => string '12121212' (length=8)      'payment1' => string '12121212' (length=8)      'user_money' => string '100' (length=3)      'user_money1' => string '50' (length=2)      'user_money2' => string '200' (length=3)  1 =>     array (size=9)      'amount' => string '100' (length=3)      'amount1' => string '50' (length=2)      'amount2' => string '200' (length=3)      'payment' => string '12121212' (length=8)      'payment1' => string '12121212' (length=8)      'user_money' => string '10' (length=2)      'user_money1' => string '5' (length=1)      'user_money2' => string '20' (length=2)      'user_money3' => string '45454545' (length=8)  2 =>     array (size=8)      'amount' => string '10' (length=2)      'amount1' => string '5' (length=1)      'amount2' => string '20' (length=2)      'payment' => string '45454545' (length=8)      'payment1' => string '45454545' (length=8)      'user_money' => string '100' (length=3)      'user_money1' => string '50' (length=2)      'user_money2' => string '200' (length=3)  3 =>     array (size=9)      'amount' => string '10' (length=2)      'amount1' => string '5' (length=1)      'amount2' => string '20' (length=2)      'payment' => string '45454545' (length=8)      'payment1' => string '45454545' (length=8)      'user_money' => string '10' (length=2)      'user_money1' => string '5' (length=1)      'user_money2' => string '20' (length=2)      'user_money3' => string '45454545' (length=8)
登入後複製

我想要的结果
$C = array( *      '1' => array(            'user_money' => '100',            'user_money1' =>'50',            'user_money2' => '200'            'amount' => '100',            'amount1' =>'50',            'amount2' => '200',            'payment' => '12121212',            'payment1' => '12121212'        ),        '2' => array(            'user_money' => '10',            'user_money1' =>'5',            'user_money2' => '20',            'user_money3' => '45454545'            'amount' => '10',            'amount1' =>'5',            'amount2' => '20',            'payment' => '45454545',            'payment1' => '45454545'        ) * );
登入後複製


回复讨论(解决方案)

补充我的建名都是一样的。然后根据建名将值合并

    $A = array(        '1' => array(            'amount' => '100',            'amount1' =>'50',            'amount2' => '200',            'payment' => '12121212',            'payment1' => '12121212'        ),        '2' => array(            'amount' => '10',            'amount1' =>'5',            'amount2' => '20',            'payment' => '45454545',            'payment1' => '45454545'        )    );    $B = array(        '1' => array(            'user_money' => '100',            'user_money1' =>'50',            'user_money2' => '200'        ),        '2' => array(            'user_money' => '10',            'user_money1' =>'5',            'user_money2' => '20',            'user_money3' => '45454545'        )    );foreach($A as $k=>$v) $r[] = $v + $B[$k];var_export($r);
登入後複製
登入後複製
array (  0 =>   array (    'amount' => '100',    'amount1' => '50',    'amount2' => '200',    'payment' => '12121212',    'payment1' => '12121212',    'user_money' => '100',    'user_money1' => '50',    'user_money2' => '200',  ),  1 =>   array (    'amount' => '10',    'amount1' => '5',    'amount2' => '20',    'payment' => '45454545',    'payment1' => '45454545',    'user_money' => '10',    'user_money1' => '5',    'user_money2' => '20',    'user_money3' => '45454545',  ),)
登入後複製
登入後複製

    $A = array(        '1' => array(            'amount' => '100',            'amount1' =>'50',            'amount2' => '200',            'payment' => '12121212',            'payment1' => '12121212'        ),        '2' => array(            'amount' => '10',            'amount1' =>'5',            'amount2' => '20',            'payment' => '45454545',            'payment1' => '45454545'        )    );    $B = array(        '1' => array(            'user_money' => '100',            'user_money1' =>'50',            'user_money2' => '200'        ),        '2' => array(            'user_money' => '10',            'user_money1' =>'5',            'user_money2' => '20',            'user_money3' => '45454545'        )    );foreach($A as $k=>$v) $r[] = $v + $B[$k];var_export($r);
登入後複製
登入後複製
array (  0 =>   array (    'amount' => '100',    'amount1' => '50',    'amount2' => '200',    'payment' => '12121212',    'payment1' => '12121212',    'user_money' => '100',    'user_money1' => '50',    'user_money2' => '200',  ),  1 =>   array (    'amount' => '10',    'amount1' => '5',    'amount2' => '20',    'payment' => '45454545',    'payment1' => '45454545',    'user_money' => '10',    'user_money1' => '5',    'user_money2' => '20',    'user_money3' => '45454545',  ),)
登入後複製
登入後複製


版主 我想简单了。。。key不是11对应的。这种情况如何合并啊?
array (  16128 =>   array (    'user_money' => '0.00',    'change_desc' => '',    'user_id' => '16128',  ),  16127 =>   array (    'user_money' => '0.00',    'change_desc' => '',    'user_id' => '16127',  ),  16126 =>   array (    'user_money' => '0.00',    'change_desc' => '',    'user_id' => '16126',  ),  16125 =>   array (    'user_money' => '0.00',    'change_desc' => '订单 2016022647848 赠送的积分',    'user_id' => '16125',  ),  16124 =>   array (    'user_money' => '0.00',    'change_desc' => '',    'user_id' => '16124',  ),  16123 =>   array (    'user_money' => '0.00',    'change_desc' => '',    'user_id' => '16123',  ),  16122 =>   array (    'user_money' => '0.00',    'change_desc' => '',    'user_id' => '16122',  ),  16121 =>   array (    'user_money' => '0.00',    'change_desc' => '',    'user_id' => '16121',  ),  16120 =>   array (    'user_money' => '0.00',    'change_desc' => '',    'user_id' => '16120',  ),  16119 =>   array (    'user_money' => '0.00',    'change_desc' => '',    'user_id' => '16119',  ),  16118 =>   array (    'user_money' => '0.00',    'change_desc' => '',    'user_id' => '16118',  ),  16117 =>   array (    'user_money' => '0.00',    'change_desc' => '',    'user_id' => '16117',  ),  16116 =>   array (    'user_money' => '0.00',    'change_desc' => '',    'user_id' => '16116',  ),  16115 =>   array (    'user_money' => '0.00',    'change_desc' => '',    'user_id' => '16115',  ),  16114 =>   array (    'user_money' => '0.00',    'change_desc' => '',    'user_id' => '16114',  ),  16113 =>   array (    'user_money' => '0.00',    'change_desc' => '',    'user_id' => '16113',  ),  16112 =>   array (    'user_money' => '0.00',    'change_desc' => '注册送积分',    'user_id' => '16112',  ),  16111 =>   array (    'user_money' => '0.00',    'change_desc' => '',    'user_id' => '16111',  ),  16110 =>   array (    'user_money' => '0.00',    'change_desc' => '',    'user_id' => '16110',  ),  16109 =>   array (    'user_money' => '0.00',    'change_desc' => '',    'user_id' => '16109',  ),)
登入後複製


B
array (  16127 =>   array (    'amount' => '1000.00',    'payment' => '储值卡号:16011118067599',    'user_id' => '16127',  ),  16110 =>   array (    'amount' => '1000.00',    'payment' => '储值卡号:16011128883958',    'user_id' => '16110',  ),  16102 =>   array (    'amount' => '1000.00',    'payment' => '储值卡号:16011125271413',    'user_id' => '16102',  ),  16077 =>   array (    'amount' => '500.00',    'payment' => '储值卡号:16011138443550',    'user_id' => '16077',  ),  16062 =>   array (    'amount' => '5.00',    'payment' => '储值卡号:15122274342772',    'user_id' => '16062',  ),  16048 =>   array (    'amount' => '500.00',    'payment' => '储值卡号:16011149520320',    'user_id' => '16048',  ),  16037 =>   array (    'amount' => '1000.00',    'payment' => '储值卡号:16011133169060',    'user_id' => '16037',  ),  16029 =>   array (    'amount' => '500.00',    'payment' => '储值卡号:16011127482943',    'user_id' => '16029',  ),  16006 =>   array (    'amount' => '500.00',    'payment' => '储值卡号:16011188176126',    'user_id' => '16006',  ),)
登入後複製

有什么区别吗?
被来就是按键关联的
你 foreach($A as $k=>$v) $r[ $k] = $v + $B[$k]; 就可以看到

版主我的需求是这样的:我要将用户的消费信息与充值信息导出到excel中。应用到3个表,users、account_log、user_account表。
users表中只需要一个user_name字段,
account_log中需要change_desc,user_money,frozen_money。
user_account表中需要payment,amount 三个表的关联字段就是user_id。

users表数据user_id    user_name1                           ss2                           dd
登入後複製

account_log表数据 ==》记录所有的充值、消费、退款记录user_id       user_money          frozen_money       change_desc1                           10                              0                               充值1                            20                              0                              充值1                            -40                             0                              消费2                            50                              0                              充值3                            50                              0                              充值
登入後複製

user_account表   ==》   只记录充值记录user_id         amount                      payment1                        10                                 充值10卡号12321                         20                                充值20卡号53452                        50                                 充值50卡号34533                         50                             充值50卡号5585
登入後複製

我当初的想法是,将user_account表的数据查出来为A将account_log数据查出为B,然后合并数组,最终想要
数组(0 => array(    'user_id' => '1',    'user_money' => '10'  ,      'user_money' => '20'  ,     'user_money' => '-40'  ,     'payment'=> ‘充值10卡号1232’,     ‘payment’ =>'充值20卡号5345'                ),1 => array(    'user_id' => '2',    'user_money' => '50'  ,     'payment'=>'充值50卡号3453'),2=>array(    'user_id' => '3',    'user_money' => '50'  ,     'payment'=>'充值50卡号5585'))
登入後複製

我最终想要这样的数据,然后foreach数组,将它导出到excel。
但是我发现合并数组我合并不好。。。版主这种导出应该怎么弄?

数组的键是唯一的,你
0 => array(
    'user_id' => '1',
    ' user_money' => '10'  ,
      ' user_money' => '20'  ,
     'user_money' => '-40'  ,
     ' payment'=> ‘充值10卡号1232’,
     ‘ payment’ =>'充值20卡号5345'                
),
这样的数组,是不可能存在的

你可以改为三级数组啊
0 => array(
    'user_id' => '1',
    'user_money' =>array( '10',  '20'  , '-40'  ),
     'payment'=>array( ‘充值10卡号1232’,'充值20卡号5345' )   //这边对应user_money应该是3个值吧,        
),
1 => array(
    'user_id' => '2',
    'user_money' => '50'  ,
     'payment'=>'充值50卡号3453'
),
2=>array(
    'user_id' => '3',
    'user_money' => '50'  ,
     'payment'=>'充值50卡号5585'
)
然后依据原理合并就可以

 $a=array(  
            0 => array(
                 'user_id' => '1',
                 'user_money' =>array( '10',  '20', '-40' ),
                 'payment'=>array('充值10卡号1232','充值20卡号5345')   //这边对应user_money应该是3个值吧,
             ),
             1 => array(
                 'user_id' => '2',
                 'user_money' => '50',
                 'payment'=>'充值50卡号3453',
             ),
             2=>array(
                 'user_id' => '3',
                 'user_money' => '50',
                 'payment'=>'充值50卡号5585',
             )
        );
    $b=array_merge_recursive($a[0],$a[1]);
    $b=array_merge_recursive($b,$a[2]);
    var_dump($b);
得到结果
array(3) { ["user_id"]=> array(3) { [0]=> string(1) "1" [1]=> string(1) "2" [2]=> string(1) "3" } ["user_money"]=> array(5) { [0]=> string(2) "10" [1]=> string(2) "20" [2]=> string(3) "-40" [3]=> string(2) "50" [4]=> string(2) "50" } ["payment"]=> array(4) { [0]=> string(18) "充值10卡号1232" [1]=> string(18) "充值20卡号5345" [2]=> string(18) "充值50卡号3453" [3]=> string(18) "充值50卡号5585" } } 

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

如何在C語言中合併兩個陣列? 如何在C語言中合併兩個陣列? Sep 10, 2023 am 09:05 AM

將兩個數組作為輸入,嘗試合併或連接兩個數組並將結果儲存在第三個數組中。合併兩個陣列的邏輯如下圖-J=0,k=0for(i=0;i<o;i++){//mergingtwoarrays  if(a[j]<=b[k]){   c[i] =a[j];   j++;  }else{ &nbs

在JavaScript中使用concat函數合併數組 在JavaScript中使用concat函數合併數組 Nov 18, 2023 pm 05:35 PM

在JavaScript中,合併數組是一種常見的操作,可以使用concat函數來實現。 concat函數可以將多個數組合併成一個新的陣列。下面我們來看一個具體的程式碼範例。首先,我們定義幾個陣列作為範例資料:vararr1=[1,2,3];vararr2=[4,5,6];vararr3=[7,8,9];接下來,使用concat函數

PHP中如何將多個數組依照指定鍵名合併為一個數組 PHP中如何將多個數組依照指定鍵名合併為一個數組 Jul 07, 2023 pm 04:12 PM

在 PHP中如何將多個數組依照指定鍵名合併為一個數組在開發中,我們經常會遇到將多個數組按照指定鍵名合併為一個數組的需求。這種需求在處理資料時非常常見,特別是在處理資料庫結果集等情況下。本文將介紹幾種常見的方法來實作這個功能,並給出對應的程式碼範例。方法一:使用循環遍歷最簡單的方法是使用循環遍歷所有的數組,並根據指定鍵名將對應的值加入新的數組。範例程式碼如下:fu

如何將兩個 PHP 數組合併為一個數組 如何將兩個 PHP 數組合併為一個數組 Sep 06, 2023 am 08:52 AM

如何將兩個PHP數組合併為一個陣列在PHP開發中,我們經常需要將兩個數字組合併為一個陣列。這種操作在資料處理和數組操作中非常常見。本文將介紹如何使用PHP簡單且有效率地合併兩個陣列。 PHP提供了兩個函數來合併數組,分別是array_merge()和array_merge_recursive()。下面我們分別介紹這兩個函數的用法和範例程式碼。 ar

php怎麼將二維數組合併不改變鍵值 php怎麼將二維數組合併不改變鍵值 Sep 30, 2021 pm 03:09 PM

在php中,可以使用「array_merge_recursive()」函數來不改變鍵值的合併二維數組;該函數在處理兩個或更多個數組元素有相同的鍵名的情況時,不會進行鍵名覆蓋,而是將多個相同鍵名的值遞歸組成一個陣列。

PHP函數介紹—array_combine(): 將兩個數組合併成一個關聯數組 PHP函數介紹—array_combine(): 將兩個數組合併成一個關聯數組 Jul 24, 2023 am 08:33 AM

PHP函數介紹—array_combine():將兩個數字組合併成一個關聯數組在PHP中,有許多實用的函數可以幫助我們處理和操作數組。其中一個非常有用的函數是array_combine()。本文將為大家介紹這個函數的用法及其範例程式碼。 array_combine()函數是將一個數組的值作為鍵名,將另一個數組的值作為鍵值,將這兩個數字組合成一個新的關聯數組。這個

PHP中如何合併兩個數組 PHP中如何合併兩個數組 Jul 07, 2023 am 09:57 AM

PHP如何合併兩個陣列在PHP程式中,常常會遇到需要合併兩個陣列的情況。 PHP提供了多種方法來實現數組的合併操作,本文將介紹其中幾種常用的方法,並附帶程式碼範例。方法一:使用array_merge函數array_merge函數是PHP提供的一個用於合併陣列的內建函數。它接受多個數組作為參數,並傳回一個合併後的新數組。以下是使用array_merge函數合併兩

PHP中如何使用array_merge函數合併數組 PHP中如何使用array_merge函數合併數組 Jun 26, 2023 pm 01:08 PM

在PHP中,陣列操作是非常頻繁的一種操作。當我們需要同時使用多個數組中的值時,就需要將這些數字組合併成一個數組以方便操作。 PHP提供了array_merge函數來實現將兩個或多個數字組合併成一個陣列的功能。在本文中,將介紹如何使用array_merge函數合併陣列。 array_merge函數的語法如下:arrayarray_merge(array$arra

See all articles