1

ここには2つの機能があります。

public function bindOwnerToSites(){  
error_reporting (E_ALL^ E_NOTICE);  

    foreach( $this->balance as $keysaa =>$key_valuesa)//getsitebalance
            { 
                foreach( $this->sites as $keys=>$key_values)//getsites
                  {

                        if  ($key_values['SiteID'] == $key_valuesa['SiteID'])
                        {

                         $this->arrays[$key_valuesa['SiteID']] = array('SiteID'=>$key_valuesa['SiteID'],'Balance'=>$key_valuesa['Balance'],'MinBalance'=>$key_valuesa['MinBalance'],'MaxBalance'=>$key_valuesa['MaxBalance'],'OwnerAID'=>$key_values['OwnerAID'],'GroupID'=>1);    

                        }

                 }

            }
            print_r ($this->arrays,$return=null);  
    }

次のように表示されるbindOwnerToSites()の出力:

Array
(
[1] => Array
    (
        [SiteID] => 1
        [Balance] => 2000
        [MinBalance] => 1000
        [MaxBalance] => 500
        [OwnerAID] => 1
        [GroupID] => 1
    )

  )

2番目の関数のコードは次のとおりです。

    public function computeGHComponents()
    {
      error_reporting (E_ALL^ E_NOTICE);          

        foreach ($this->transaction as $t){
            $amount = (float) $t['Amount'];

            if (isset($this->totals[ $t['SiteID'] ][ $t['TransactionType'] ])){
                $this->totals[ $t['SiteID'] ][ $t['TransactionType'] ] += (float) $amount;
            } else {
                 $this->totals[ $t['SiteID'] ][ $t['TransactionType'] ] = (float) $amount;
            }
        }

     foreach($this->totals as $key => $value)
        {
          $this->result[$key] = array("Deposit"=>$value['D'], "Redemption"=>$value['W'], "Reload"=>$value['R']);

       }
        print_r($this->result); 

    } 

そして、computeGHComponents()の出力は次のように表示されます。

Array
(
[1] => Array
    (
        [Deposit] => 10000
        [Redemption] => 500.00
        [Reload] => 200.00
    )

  )

次に、2つの関数の結果をバインドする必要があります。自分で試してみますが、コードに問題があります。助けが必要です。すべてをここに配置するので、私が何を達成すると思われるかをよりよく理解していただければ幸いです。これがバインディングの私のコードです:

    public function bindGHComponentsToSites()
    {
    error_reporting (E_ALL^ E_NOTICE);  

    $combined = array();

    foreach($this->arrays as $key => $key_value){

                 foreach($this->result as $keys => $key_values){   

               $combined[$key_values['SiteID']] = array_merge((array)$key_value, (array)$key_values);

          }


     }  
       print_r($combined);

  }

結果は次のようになります。どうすればこのような結果を得ることができますか?この質問にはもうしばらくお待ちください。私は初心者プログラマーですので、ご理解いただければ幸いです。

Array
(
[1] => Array
    (
        [SiteID] => 1
        [Balance] => 2000
        [MinBalance] => 1000
        [MaxBalance] => 500
        [OwnerAID] => 1
        [GroupID] => 1
        [Deposit] => 10000.00
        [Redemption] =>  500.00
        [Reload] => 200.00
    )

 )

よろしくお願いします。適切な方法でご案内ください。

4

1 に答える 1

2

配列をマージするためのplus演算子があります(キーを保持する必要がある場合):

<?php
$array1 = array('foo' => 'bar');
$array2 = array('baz' => 'trololol');

print_r($array1 + $array2); // yields "Array ( [foo] => bar [baz] => trololol )"

あなたの場合、これは次のように利用できます。

$combined = array();
foreach ($this->arrays as $siteId => $data) {
    $combined[$siteId] = $data + $this->result[$siteId];
}
于 2012-08-11T13:28:36.327 に答える