Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.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
Yii-php警告:从空值创建默认对象_Php_Yii - Fatal编程技术网

Yii-php警告:从空值创建默认对象

Yii-php警告:从空值创建默认对象,php,yii,Php,Yii,我对PHP和YII框架不熟悉,不要太严格。 我有一些来自谷歌货币兑换率的代码 for ($i = 1; $i <= 3; $i++) { $model = WidgetCurrencyElement::model()->findByPk($i); $buy = 100.25*$er[$i]; $buy = (int)$buy; $buy /= 100; $sale = $er[$i

我对PHP和YII框架不熟悉,不要太严格。 我有一些来自谷歌货币兑换率的代码

for ($i = 1; $i <= 3; $i++)
     {
         $model = WidgetCurrencyElement::model()->findByPk($i);

         $buy = 100.25*$er[$i];
         $buy = (int)$buy;
         $buy /= 100;

         $sale = $er[$i]/0.010025;
         $sale = (int)$sale;
         $sale /= 100;

         $model->buy = $buy;
         $model->sale = $sale;

         if(!$model->save()){
             print_r($model->getErrors());
             die("not saved!");
         }
     }
     $this->render('currency', array('er1' => $er[1], 'er2'=>$er[2], 'er3'=>$er[3]));
}
for($i=1;$i findByPk($i);
$buy=100.25*$er[$i];
$buy=(整数)$buy;
$buy/=100;
$sale=$er[$i]/0.010025;
$sale=(int)$sale;
$sale/=100;
$model->buy=$buy;
$model->sale=$sale;
如果(!$model->save()){
打印($model->getErrors());
死(“不得救!”);
}
}
$this->render('currency',array('er1'=>$er[1],'er2'=>$er[2],'er3'=>$er[3]);
}
它告诉我

“PHP警告从空值创建默认对象”。我不明白为什么。 这种错误的原因是什么?
“$model”并非完全为空。

正如Arkoak所说,数据库中可能不存在一个或多个id。因此,最好在找到对象后确保对象存在,然后尝试为其赋值:

for ($i = 1; $i <= 3; $i++)
 {
     $model = WidgetCurrencyElement::model()->findByPk($i);
     if($model != null)
     {
         $buy = 100.25*$er[$i];
         $buy = (int)$buy;
         $buy /= 100;

         $sale = $er[$i]/0.010025;
         $sale = (int)$sale;
         $sale /= 100;

         $model->buy = $buy;
         $model->sale = $sale;

         if(!$model->save()){
             print_r($model->getErrors());
             die("not saved!");
         }
     }

 }
for($i=1;$i findByPk($i);
如果($model!=null)
{
$buy=100.25*$er[$i];
$buy=(整数)$buy;
$buy/=100;
$sale=$er[$i]/0.010025;
$sale=(int)$sale;
$sale/=100;
$model->buy=$buy;
$model->sale=$sale;
如果(!$model->save()){
打印($model->getErrors());
死(“不得救!”);
}
}
}

findByPk($i)正在为所有ID(1,2,3)循环在数据库中可用的原因应该是一个或多个id不在数据库中。与其在这样的循环中查找项,不如运行一个查询,然后循环结果以绕过这样的问题。@YatinMistry你是对的,第三个id丢失了,所以我按照arkoad在回答中指出的那样做了。非常感谢!你的答案是h帮了我我花了两个小时来修正那个警告。