【发布时间】:2015-04-29 09:14:57
【问题描述】:
我是 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]));
}
它告诉我
“PHP 警告从空值创建默认对象”。我不明白为什么。 这种错误的原因是什么? '$model' 并非完全为空。
【问题讨论】:
-
findByPk($i) 正在循环中,所以数据库中的所有 ids(1,2,3) 都可以使用
-
原因应该是一个或多个id不在db中。与其在这样的循环中查找项目,不如运行一个查询然后循环遍历结果以绕过此类问题。
-
@YatinMistry 你是对的,第三个 id 不见了,所以我按照 arkoad 在他的回答中指出的那样做了。