我在view.php中有这个查询
<?php
$packageq= Yii::$app->db->createCommand
("SELECT p.package_name,p.`total_charges`
as 'package_charges'
FROM `package` p, estimate e,patient_detail pd
where pd.package=p.id
and e.ipd_patient_id=pd.ipd_patient_id
and e.id=$model->id");
$packages= $packageq->queryAll();
//var_dump($packages);exit;
echo '<table class="table table-striped table-bordered table-hover">';
echo "<tr><th>Package Name</th><th>Amount</th></tr>";
if (![$packages]==''){
foreach($packages as $package){
echo "<tr><td>";
echo $package['package_name'];
echo "</td><td>";
$d= $package['package_charges'];
echo $d;
echo "</td></tr>";
}
}else{
$d=0;
}
var_dump($d);exit;
echo "<tr><td>";
echo 'Total D';
echo "</td><td>";
echo "<tr><td>";
echo 'Total A+B+C+D';
echo "</td><td>";
echo ($a+$b+$c+$d);
echo "</table>";
?>
当我为$ packages做var_dump时,我正在
array (size=0)
empty
当我为$ d做var_dump时,我收到错误 变量d未定义 任何具体原因或我在这里做错了什么。 谢谢你的建议。
答案 0 :(得分:1)
关于$packages
,$packageq->queryAll()
不得返回任何内容。关于$ d,您将其转储到定义$d
的范围之外。如果您希望能够在具有var_dump的范围内访问$ d,则必须在if / else之外定义$ d。如果您使用$d;
在if / else之外声明$ d或将$d
定义为空值(例如$d = 0;
),则您可以在if内设置if / else并且仍然可以在父作用域中访问它。如果您在条件之前定义了$d = 0
,则可以将else { $d = 0; }
全部放在一起。
此外,如果$ packages是一个数组,并且您想测试它是否已填充,您可以考虑
if(!empty($packages)) {
...
}
而不是
if(![$packages] == '') {
...
}