Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php中foreach和loop语句的问题_Php_Mysql_If Statement_Foreach - Fatal编程技术网

php中foreach和loop语句的问题

php中foreach和loop语句的问题,php,mysql,if-statement,foreach,Php,Mysql,If Statement,Foreach,我有许多$competitors(这是从MySQL检索到的一个对象数组)(比如9),我有$competitors[I]->minSingleCarefee数据,即费用数据。我想对这些费用数据进行平均,但可能是数据集不完整,即我没有9个竞争对手的所有费用数据。因此,我通过使用if语句并在费用数据可用时递增$data\u available来跟踪这一点 我的问题是,代码似乎有缺陷,因为它只返回第一个竞争对手的费用值。。。我不知道为什么!另外,当我回显$data_时,它总是以0结尾 //declari

我有许多
$competitors
(这是从MySQL检索到的一个对象数组)(比如9),我有
$competitors[I]->minSingleCarefee
数据,即费用数据。我想对这些费用数据进行平均,但可能是数据集不完整,即我没有9个竞争对手的所有费用数据。因此,我通过使用if语句并在费用数据可用时递增
$data\u available
来跟踪这一点

我的问题是,代码似乎有缺陷,因为它只返回第一个竞争对手的费用值。。。我不知道为什么!另外,当我回显$data_时,它总是以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);
  • 是在教室里吗?如果是这样,你就不能那样做
  • else{}是不必要的
  • 您可以使用$data_available++代替现有的功能
  • 您将变量视为对象。它是什么,变量还是对象

    $competitor->minSingleCareFee

  • 您已将competitor设置为此时competitors数组的值。

    使用以下方法:

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

    请发布var_转储($competitors);尝试将此
    if($competitor->minSingleCareFee!=NULL){
    更改为此
    if(!is_NULL($competitor->minSingleCareFee)){
    在我们知道$competitors内部的内容之前帮不上忙。因此按照@user574632@user574632这里是一个数据转储块:数组(5){[0]=>object(stdClass)#153(41){[“id”]=>字符串(1)“1”[“PostcodeinCodepointFormat”]=>字符串(6)“XXXXX”[“Home_name”]=>字符串(9)“XXXXXX”[“minSingleCareFee”]字符串(3)“750”@sankalphatt这是数据转储:数组(5){[0]=>对象(stdClass){153(41){[“id”=>字符串(1)“1”[“Postcodeincodeincodepointormat”]=>字符串(6)“XXXXX”[“Home_name”]=>字符串(9)“XXXXXX”[]字符串(3)“750”等…更多关于提示而非答案。好的,让我检查一下…是否有一种方法可以让我访问avg_费用函数之外的$data_可用变量?使用全局关键字。参考: