目次
ディスカッションへの返信(解決策)

配列を結合する

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',  ),)
ログイン後にコピー
ログイン後にコピー


モデレーター 簡単だと思います。 。 。キーは 11 に対応していません。この状況をどのように統合するか?
rree

B
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',  ),)
ログイン後にコピー

違いはありますか?
キーストロークに関連付けられています
foreach($A as $k=>$v) $r[ $k] = $v + $B[$k]; でモデレータとしての私のニーズがわかります

これ: ユーザーの消費情報とチャージ情報を Excel にエクスポートしたい。 3 つのテーブル、users、account_log、user_account テーブルに適用されます。

users テーブルには user_name フィールドが 1 つだけ必要であり、
account_log にはchange_desc、user_money、およびfrozen_moneyが必要です。
user_account テーブルには支払いと金額が必要です。3 つのテーブルの関連フィールドは us​​er_id です。

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',  ),)
ログイン後にコピー

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 テーブルのデータを A として、account_log データを B として見つけて、配列をマージすることでした。最終的に、そのようなデータが必要になり、foreach 配列が必要になります。それをエクセルにエクスポートします。
しかし、配列をうまくマージできないことがわかりました。 。 。モデレーターはこの種のエクスポートをどのように行うべきですか?

配列のキーは一意です。
0 => array(

'user_id' => '1',

' user_money' => '10' ,
' user_money' => '20' ,
'user_money' => '-40' 、
'payment' => 'リチャージ 10 カード番号 1232'、
'支払い' => 'リチャージ 20 カード番号 5345'
)、
このようになります不可能です 存在します

3 レベルの配列に変更できます
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(
0 ', '20', '-40' ),
'支払い '=>array('リチャージ 10 カード番号 1232', 'リチャージ 20 カード番号 5345 ')//ここでの対応するuser_moneyは3つの値でなければなりません
1 => > '50'、
'支払い'=>'リチャージ 50 カード番号 5585'、

$b=array_merge_recursive($a[0],$a[1]);
$b=array_merge_recursive($b, $a[2]);
結果を取得
array(3) { [0]=> [1]=> 文字列(1) "2" => 文字列(1) "3" } ["user_money"]=> 文字列(2) "10" [1]=> 文字列(2) "20" => 文字列(3) "50" => 文字列(2) "50" } ["支払い"]=> 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 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

C言語で2つの配列をマージするにはどうすればよいですか? C言語で2つの配列をマージするにはどうすればよいですか? Sep 10, 2023 am 09:05 AM

2 つの配列を入力として受け取り、2 つの配列をマージまたは連結して、結果を 3 番目の配列に格納してみます。 2 つの配列をマージするロジックは次のとおりです-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で指定されたキー名に従って複数の配列を1つの配列にマージする方法 PHPで指定されたキー名に従って複数の配列を1つの配列にマージする方法 Jul 07, 2023 pm 04:12 PM

PHP で指定されたキー名に従って複数の配列を 1 つの配列にマージする方法 開発中、指定されたキー名に従って複数の配列を 1 つの配列にマージする必要に遭遇することがよくあります。この必要性は、データを操作する場合、特にデータベースの結果セットを操作する場合などに非常に一般的です。この記事では、この機能を実現するための一般的な方法をいくつか紹介し、対応するコード例を示します。方法 1: ループ走査を使用する 最も簡単な方法は、ループを使用してすべての配列を走査し、指定されたキー名に従って対応する値を新しい配列に追加することです。サンプルコードは次のとおりです。

2 つの PHP 配列を 1 つの配列にマージする方法 2 つの PHP 配列を 1 つの配列にマージする方法 Sep 06, 2023 am 08:52 AM

2 つの PHP 配列を 1 つの配列にマージする方法 PHP 開発では、2 つの配列を 1 つの配列にマージする必要がよくあります。この操作は、データ処理や配列操作で非常に一般的です。この記事では、PHP を使用して 2 つの配列を簡単かつ効率的に結合する方法を紹介します。 PHP には、配列をマージするための 2 つの関数、array_merge() と array_merge_recursive() が用意されています。以下にこれら2つの関数の使い方とサンプルコードをそれぞれ紹介します。あーる

PHPでキー値を変更せずに2次元の数値を結合する方法 PHPでキー値を変更せずに2次元の数値を結合する方法 Sep 30, 2021 pm 03:09 PM

PHP では、「array_merge_recursive()」関数を使用して、キー値を変更せずに 2 次元配列をマージできます。この関数は、2 つ以上の配列要素が同じキー名を持つ状況を処理するときにキー名を上書きしません。代わりに、同じキー名を持つ複数の値が再帰的に配列に形成されます。

PHP 関数の紹介—array_combine(): 2 つの配列を結合して 1 つの連想配列にする PHP 関数の紹介—array_combine(): 2 つの配列を結合して 1 つの連想配列にする Jul 24, 2023 am 08:33 AM

PHP 関数の紹介 -array_combine(): 2 つの配列を結合して連想配列にする PHP には、配列の処理と操作に役立つ実用的な関数が多数あります。非常に便利な関数の 1 つは array_combine() です。この記事ではこの関数の使い方とサンプルコードを紹介します。 array_combine() 関数は、1 つの配列の値をキー名として使用し、別の配列の値をキー値として使用して、2 つの配列を新しい連想配列にマージします。これ

PHPで2つの配列をマージする方法 PHPで2つの配列をマージする方法 Jul 07, 2023 am 09:57 AM

PHP で 2 つの配列をマージする方法 PHP プログラミングでは、2 つの配列をマージする必要がある状況によく遭遇します。 PHP には、配列のマージ操作を実装するためのさまざまなメソッドが用意されています。この記事では、一般的なメソッドのいくつかをコード例とともに紹介します。方法 1: array_merge 関数を使用する array_merge 関数は、配列を結合するために PHP によって提供される組み込み関数です。複数の配列をパラメータとして受け入れ、マージされた新しい配列を返します。以下は、array_merge 関数を使用して 2 つをマージする例です。

PHPで複数の配列をマージする方法 PHPで複数の配列をマージする方法 Jul 08, 2023 pm 02:42 PM

PHP で複数の配列をマージする方法 PHP では、配列は非常に重要なデータ構造であり、複数の関連するデータ項目を保存および操作するためによく使用されます。データをより便利に処理するために、複数の配列を 1 つの配列にマージする必要がある場合があります。この記事では、PHP で複数の配列を結合する方法を説明し、コード例を示します。 PHP には配列をマージするためのさまざまな方法が用意されています。ここでは、「+」演算子を使用する、array_merge 関数を使用する、array_m を使用するという 3 つの一般的な方法を紹介します。

See all articles