2010-10-04 42 views
0

我正在用調用存儲過程的數據創建一個報告,該過程返回 各個部分(1,2,3,4,5,6)與數據在每個section.Now的部分可能含有或可能 不包含data.This是如何我已經wriiten我的邏輯我如何得到這個或更正這個PHP邏輯Working

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'] 
} 

所以在這裏我的問題,如果該部分的任何一個不存在,則該部分案件不能被執行 。我的意思是即使該部分沒有從數據庫返回,我該如何執行該部分

+0

添加默認情況下切換案例 – 2010-10-04 14:34:31

回答

1

我想你已經按部分訂購了你的結果。如果你的部分是真正的1-N,你可以把你的交換機()代碼到一些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); 

如果你的部分是不連續的號碼,你可以創建一個數組,並檢查他們是否」 VE全部被執行

$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; 
    } 
} 
+0

我怎麼寫runsections()。你是完全正確的iam按部分排序結果。說我只有6個部分多數民衆贊成它.how寫代碼我的意思是如何執行如果部分不存在 – Someone 2010-10-04 14:57:18

+0

@Someone:請參閱我的編輯。基本上你的switch()是一個函數的一部分,所以你不必在你的代碼中複製它。對於(...)runsections()將遍歷結果中缺失的部分,並與它們一起調用該開關。 – jab11 2010-10-04 15:12:41

+0

沒有Iam無法打印部分沒有不存在的部分不存在從數據庫或結果集 – Someone 2010-10-04 15:29:30

1
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"; 
} 
+0

我添加了默認情況下,但它沒有執行 – Someone 2010-10-04 14:49:54

+0

如果您遇到這種情況,我認爲無論是某種情況之前觸發或您的情況從未執行。 – 2010-10-05 15:43:53

0

你最後的情況下,插入後:

default: echo "some error"; 

break是可選的,因爲它在switch語句中的最後一種情況。另外,如果您正在查找數字選項,則單引號也是可選的。

case 1: echo "something"; 
     break; 
+0

我添加了默認但沒有用 – Someone 2010-10-04 14:49:02

0

也許我不太正確理解你想要的東西。以下代碼應在下列條件下工作:

您總是希望顯示具有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."; 
    } 
} 
0

這裏是我有!

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錯誤($本 - > $ DBRESULTS改變時,使用的不是isset = '' ),並且如果找不到該部分,則在其中添加一個else。