[英]How do i get this or correct this PHP logic Working
我正在创建一个包含存储过程的数据的报告,该过程将返回各节(1,2,3,4,5,6)和每个节中的数据。现在这些节可能包含或可能不包含数据这就是我扭曲逻辑的方式
foreach($this->$dbresults as $row){
$var1 ='';
If($var1!=$row['section']){
switch($row['section']){
case '1':echo "some thing data";
break;
case '2':echo "some thing data";
break;
case '3':echo "some thing data";
break;
case '4':echo "some thing data";
break;
case '5':echo "some thing data";
break;
case '6':echo "some thing data";
break;
}
}
$var1=$row['section']
}
所以这是我的问题,如果不存在任何部分,则无法执行该部分的情况。我的意思是即使该部分没有从数据库中返回,如何执行该部分
switch($x){
case '1':
echo "some thing 1";
break;
case '2':
echo "some thing 2";
break;
case 'N':
echo "some thing N";
break;
default:
echo "some thing else";
}
我想您已经按部分对结果进行了排序。 如果您的部分实际上是1-n,则可以将switch()代码放入一些runsections函数中,然后执行以下操作:
$var1=0; $lastsection=16;
foreach($this->dbresults as $row) {
If($var1!=$row['section']){
for($num=$var1+1; $num<$row['section']; $num++) runsections($num);
runsections($row['section']);
}
$var1=$row['section'];
}
for($num=$var1+1;$num<=$lastsection;$num++) runsections($num);
如果您的部分不是连续数字,则可以创建一个数组并检查它们是否已全部执行
$sections=array('a'=>0,'b'=>0,'c'=>0,'d'=>0,'e'=>0);
If($var1!=$row['section']){
unset($sections[$row['section']]);
runsection($row['section']);
}
...
}
foreach($sections as $num) {
runsection($num);
}
编辑 :所以runsections()函数将如下所示:
function runsections($section) {
switch($section){
case '1':echo "some thing data";
break;
case '2':echo "some thing data";
break;
case '3':echo "some thing data";
break;
case '4':echo "some thing data";
break;
case '5':echo "some thing data";
break;
case '6':echo "some thing data";
break;
}
}
在您的最后一种情况之后,插入:
default: echo "some error";
break
是可选的,因为它是switch语句中的最后一种情况。 另外,如果您要查找数字选项,则单引号也是可选的。
case 1: echo "something";
break;
也许我不太了解您想要什么。 以下代码应在以下情况下工作:
您始终希望显示包含DB数据或非DB数据的6个部分。
您无需多次显示同一部分。
$sections = range(1, 6);
foreach($sections as $sectionNum) {
$sectionNum = (string) $sectionNum;
$foundSection = false;
foreach($this->dbresults as $row) {
if ($row['section'] == $sectionNum) {
echo "section #$sectionNum has DB data: " . $row['data'];
$foundSection = true;
break;
}
}
if (!$foundSection) {
echo "section #$sectionNum does not have DB data.";
}
}
这是我得到的:
foreach($this->dbresults as $row){
if(isset($row['section'])){
switch($row['section']){
case '1':echo "some thing data";
break;
case '2':echo "some thing data";
break;
case '3':echo "some thing data";
break;
case '4':echo "some thing data";
break;
case '5':echo "some thing data";
break;
case '6':echo "some thing data";
break;
default:echo "some thing data";
break;
}
} else {
//Do something since no section data was stored
}
}
我添加了一个默认情况,修复了小的php错误(使用isset而不是!=''更改了$ this-> $ dbresults,并在未找到该部分的情况下向其添加了else。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.