0

ここに 2 つのデータがあります。

この最初の関数の結果:

Array
(
[2] => Array
    (
        [SiteID] => 2
        [Balance] => 19000.00
        [MinBalance] => 100000.00
        [MaxBalance] => 1000000.00
        [OwnerAID] => 83
        [GroupID] => 1
    )

 [3] => Array
    (
        [SiteID] => 3
        [Balance] => 94000.99
        [MinBalance] => 100000.00
        [MaxBalance] => 500000.00
        [OwnerAID] => 17
        [GroupID] => 1
    )

[4] => Array
    (
        [SiteID] => 4
        [Balance] => 1000000.00
        [MinBalance] => 100000.00
        [MaxBalance] => 1000000.00
        [OwnerAID] => 12
        [GroupID] => 1
    )

)

2 番目の関数の結果:

 Array
(
 [3] => Array
    (
        [Deposit] => 459000
        [Reload] => 169100
        [Redemption] => 703576
    )

[2] => Array
    (
        [Deposit] => 1500
        [Reload] => 1000
        [Redemption] => 1000
    )
 )

ここで、2 つの関数の結果をバインドする必要があります。次のコードで試してみます。

    public function bindGHComponentsToSites()
    {
   error_reporting (E_ALL^ E_NOTICE);  
   $combine = array();

     foreach ($this->arrays as $keys => $data) {


       foreach($this->result as $keyss => $value){

            if($data['SiteID'] == $keyss){

                $merged = array_merge((array)$data, (array)$value);

            }
             else if ($data['SiteID'] != $keyss){

                 $val = array('Deposit'=>0, 'Reload'=>0, 'Redemption'=>0);

                 $merged = array_merge((array)$data, (array)$val);
             }

        }

              $this->combined[$data['SiteID']] = $merged;

     } 

      print_r($this->combined);
  }   

しかし、間違った出力が得られました。条件は、bindownertosites の SiteID が Computeghcomponents の SiteId と一致しない場合は、Deposit、Reload、および Redemption の値をゼロに等しくする必要があることを出力するだけです。

デポジット、リロード、および償還はすべてゼロに等しく、これは間違っています。正しい結果は次のとおりです。

Array
(
[2] => Array
    (
        [SiteID] => 2
        [Balance] => 19000.00
        [MinBalance] => 100000.00
        [MaxBalance] => 1000000.00
        [OwnerAID] => 83
        [GroupID] => 1
        [Deposit] => 1500
        [Reload] => 1000
        [Redemption] => 1000
    )

[3] => Array
    (
        [SiteID] => 3
        [Balance] => 94000.99
        [MinBalance] => 100000.00
        [MaxBalance] => 500000.00
        [OwnerAID] => 17
        [GroupID] => 1
        [Deposit] => 459000
        [Reload] => 169100
        [Redemption] => 703576
    )

[4] => Array
    (
        [SiteID] => 3
        [Balance] => 94000.99
        [MinBalance] => 100000.00
        [MaxBalance] => 500000.00
        [OwnerAID] => 17
        [GroupID] => 1
        [Deposit] => 0
        [Reload] => 0
        [Redemption] => 0
    )
  )

このような結果になる可能性はありますか?みんな助けてください、私はこれにほぼ1週間取り組んできましたが、常に間違った出力が得られました。私はあなたの応答に感謝します.私はそれらのことを明確にするためにここにすべてを置きます.あなたが答える前に親切に私の質問を見直してください. 私を助けて、適切な方法で私を導いてください。前もって感謝します。

4

1 に答える 1

0

これはあなたが期待したことをするので、とても簡単です

試す

foreach (array_keys($this->arrays) as $value) {
    $default = array('Deposit' => 0, 'Reload' => 0, 'Redemption' => 0);
    if (array_key_exists($value, $this->result)) {
        $temp = array_merge($this->arrays[$value], $this->result[$value]);
        $this->arrays[$value] = $temp;
    } else {
        $temp = array_merge($this->arrays[$value], $default);
        $this->arrays[$value] = $temp;
    }
}
print_r($this->arrays);
于 2012-08-17T05:08:52.083 に答える