2014-04-17 37 views
0

我有一个$competitors(这是从MySQL检索的对象数组)(例如9),我有$competitors[i]->minSingleCarefee数据,即费用数据。我想对这些费用数据进行平均处理,但可能数据集并不完整,即我没有9个竞争对手的费用数据。因此,如果费用数据可用,我通过使用if语句并且递增$data_available来跟踪该数据。问题与foreach和循环语句在php

我的问题是,它似乎代码有缺陷,因为它只返回第一个竞争对手的费用价值......我不知道为什么!同时$ data_available在我回显时总是最终为0。

//declaring variables 
$mm_avg_fees = 0; 
$data_available = 0; 

//function to calculate average fees 
function avg_fees($competitors, $mm_avg_fees, $data_available){ 

     foreach ($competitors as $competitor) { 
      //impose condition to increment data_available 
      //only if there is data in the minSingleCareFee column for the $competitor 
      if ($competitor->minSingleCareFee != NULL) { 
       $mm_avg_fees = $mm_avg_fees + $competitor->minSingleCareFee; 
       $data_available = $data_available + 1; 
      } else {} 
     } 
    return $mm_avg_fees/$data_available; 
} 

echo echo 'The current average for single room fees in your micromarket is: ' . avg_fees($competitors, $mm_avg_fees, $data_available); 
+0

请发表的var_dump($竞争对手); – Steve

+0

尝试改变这个'if($ competitor-> minSingleCareFee!= NULL){'如果(!is_null($ competitor-> minSingleCareFee)){' – Vagabond

+0

'不能帮助我们知道什么是$竞争对手。因此,像@ user574632 –

回答

0

使用此:

//declaring variables 
$mm_avg_fees = 0; 
$data_available = 0; 

//function to calculate average fees 
function avg_fees($competitors, $mm_avg_fees, $data_available){ 

     foreach ($competitors as $competitor) { 
      //impose condition to increment data_available 
      //only if there is data in the minSingleCareFee column for the $competitor 
      if (!empty($competitor->minSingleCareFee)) { 
       $mm_avg_fees = $mm_avg_fees + $competitor->minSingleCareFee; 
       $data_available = $data_available + 1; 
      } 
     } 
    return $mm_avg_fees/$data_available; 
} 

echo 'The current average for single room fees in your micromarket is: ' . avg_fees($competitors, $mm_avg_fees, $data_available); 
+0

好吧,让我检查...有没有办法让我访问avg_fees函数之外的$ data_available变量?使用GLOBAL关键字的 –

+0

。参考:http://www.php.net/manual/en/language.variables.scope.php –

+0

好吧,它的工作原理,谢谢!我想知道为什么它不工作... –

0
  1. 它是一个类里面呢?如果是这样,你不能这样做。
  2. 其他{}是不必要的。
  3. 你可以做$ data_available ++代替那里的东西。
  4. 您正在将var作为对象。它是什么,一个变种或一个物体?

    $ competitor-> minSingleCareFee

,你设定的一些竞争对手是竞争对手阵中那一刻的价值。

+0

更多关于提示而不是答案。 – ponciste