【问题标题】:Proper Printing of Arrays in PHP在 PHP 中正确打印数组
【发布时间】:2012-08-16 07:55:21
【问题描述】:

如果数组与 SiteID 不匹配,如何打印,只需打印 [Deposit] => 0、[Reload] => 0 和 [Redemption] => 0。

这是我的第一个函数:

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

这是我的第二个功能:

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

      $totals = NULL;

      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 $keyb => $value)

        {
          //$this->result[$key] = array("Deposit"=>$value['D']  , "Redemption"=>$value['W']  , "Reload"=>$value['R'] );
         $this->result[$keyb]['Deposit'] = isset($value['D']) ? $value['D'] : 0;
         $this->result[$keyb]['Reload']  = isset($value['R']) ? $value['R'] : 0; 
         $this->result[$keyb]['Redemption'] = isset($value['W']) ? $value['W'] : 0;

       }
      echo "<pre>";

     print_r($this->result);

    } 

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

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


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

但是函数的结果是这样的:

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] => 459000
        [Reload] => 169100
        [Redemption] => 703576
    )
)  

这里应该是正确的输出:

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

但我得到了错误的输出。 Site ID => 4的存款、充值和赎回应该等于0。我怎样才能做到这一点?请以正确的方式指导我。提前谢谢你。

【问题讨论】:

  • 你的数组结构如何?
  • @martynthewolf,我会发布的。谢谢
  • @Trinh Hoang Nhu,不,请查看我的问题。谢谢
  • 也许你能告诉我们$this-&gt;result 长什么样?我刚刚意识到我不知道它是什么样子,所以我不得不有效地给出两个答案。
  • 让你问清楚什么是 $this->result,$this->array

标签: php arrays printing


【解决方案1】:

我相信你的 foreach 弄错了,试试:

foreach($this->result as $keyss => $value){
    if($keyss == 'SiteID'){
        if($data['SiteID'] == $value){
            $merged = array_merge((array)$data, (array)$value);
        }
        else if ($data['SiteID'] != $value){
            $val = array('Deposit'=>0, 'Reload'=>0, 'Redemption'=>0);
            print_r($val);
            $merged = array_merge((array)$data, (array)$val);
        }
    }
}

虽然我不能确定,因为我不知道$this-&gt;result 是什么。

根据我的看法,这也可以:

foreach($this->result as $keyss => $value){
        if($data['SiteID'] == $value['SiteID']){
            $merged = array_merge((array)$data, (array)$value);
        }
        else if ($data['SiteID'] != $value['SiteID']){
            $val = array('Deposit'=>0, 'Reload'=>0, 'Redemption'=>0);
            print_r($val);
            $merged = array_merge((array)$data, (array)$val);
        }
}

但我们还是不知道$this-&gt;result 是什么。

【讨论】:

  • @Sammaye,我将编辑所有帖子以使事情变得清晰。很抱歉给大家带来了困惑。谢谢。
  • @Sammaye,我完成了我的问题的编辑。请看。谢谢。
猜你喜欢
  • 1970-01-01
  • 2019-06-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多