【问题标题】:How to bind the two array results and Print it in a right output PHP如何绑定两个数组结果并在正确的输出PHP中打印
【发布时间】:2012-08-17 02:37:40
【问题描述】:

我这里有两个数据:

第一个函数的结果:

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
    )

)

第二个函数的结果:

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

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

现在,我需要绑定两个函数的结果,我用这个代码试试:

    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 应该等于 0。

Deposit, Reload and Redemption 都等于 0,这是错误的。这应该是正确的结果:

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
    )
  )

有可能得到这样的结果吗?请帮帮我,我一直在处理这个几乎一个星期,但我总是得到错误的输出。感谢您的回复。我把所有东西都放在这里是为了澄清这些事情。请在回答之前查看我的问题。请帮助我并以正确的方式指导我。先感谢您。

【问题讨论】:

  • 伙计们,请帮帮我,我知道这对你们所有人来说有点容易,但我发现很难。我会感谢你的回复。
  • 我没有得到你的问题,你的预期结果是什么?
  • @so geek,如果我的两个函数的SiteID不相等,那么只需打印BindOwnerToSites中的SiteID的数据并添加,三个键Deposit,Reload和Redemption并将值相等零。
  • 那么最后的代码是预期的结果吗?你从 combine 函数中得到了什么?
  • @so geek,是的最后一个代码,我得到了错误的输出,所有的存款、重新加载和赎回的价值都变成了零。不知道怎么修改代码。

标签: php arrays printing array-merge


【解决方案1】:

这会如你所愿,如此简单

试试

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);

【讨论】:

  • @ 太极客了,好吧,我会试试的。坚持,稍等。谢谢
  • @ 太极客了,有一个错误,你可以在我拥有的代码上绘制你的代码吗?非常感谢。
  • @Mic 看我编辑的,你需要在bindGHComponentsToSites()方法中有循环。
  • @ 太极客了,它有效!非常感谢。感谢您的关心。
猜你喜欢
  • 2012-08-08
  • 1970-01-01
  • 2013-04-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-01
相关资源
最近更新 更多