2013-02-13 65 views
1

我想編譯一個if語句,通過檢查mysqli變量來檢查答覆類型是Single還是Multiple。如果Single然後輸出選項作爲單選按鈕,如果Multiple然後輸出選項作爲複選框。在if語句中的未定義變量

但是,我在$qandaReplyType的if語句中收到未定義的變量錯誤。這個問題怎麼解決?下面

代碼:

$qandaquery = "SELECT q.QuestionId, r.ReplyType 
        FROM Question q 
        LEFT JOIN Reply r ON q.ReplyId = r.ReplyId 

        WHERE SessionId = ? 
        GROUP BY q.QuestionId 
        ORDER BY RAND()"; 

    $qandaqrystmt=$mysqli->prepare($qandaquery); 
    // get result and assign variables (prefix with db) 
    $qandaqrystmt->execute(); 
    $qandaqrystmt->bind_result($qandaQuestionId,$qandaReplyType); 


    $arrReplyType = array(); 


    while ($qandaqrystmt->fetch()) { 

    $arrReplyType[ $qandaQuestionId ] = $qandaReplyType; 
    } 

    $qandaqrystmt->close(); 





    function ExpandOptionType($option) { 

    $options = explode('-', $option); 
    if(count($options) > 1) { 
     $start = array_shift($options); 
     $end = array_shift($options); 
     do { 
      $options[] = $start; 
     }while(++$start <= $end); 
    } 
    else{ 
     $options = explode(' or ', $option); 
    } 

    if($qandaReplyType == 'Single'){ 
    foreach($options as $indivOption) { 
     echo '<div class="ck-button"><label class="fixedLabelCheckbox"><input type="radio" name="options_<?php echo $key; ?>[]" id="option-' . $indivOption . '" value="' . $indivOption . '" /><span>' . $indivOption . '</span></label></div>'; 
    } 
}else if($qandaReplyType == 'Multiple'){ 
      foreach($options as $indivOption) { 
     echo '<div class="ck-button"><label class="fixedLabelCheckbox"><input type="checkbox" name="options_<?php echo $key; ?>[]" id="option-' . $indivOption . '" value="' . $indivOption . '" /><span>' . $indivOption . '</span></label></div>'; 
    } 
} 
} 

foreach ($arrQuestionId as $key=>$question) { 

echo ExpandOptionType(htmlspecialchars($arrOptionType[$key])); 

} 

?> 
+0

我不能看到從任何你定義$ qandaReplyType變量的地方,它通常是空的或未定義的。 – 2013-02-13 21:10:16

回答

3

$qandaReplyType沒有在函數內部存在。

您需要在函數內包含global $qandaReplyType,然後才能使用變量的全局版本。

在PHP中刷新variable scope無傷大雅。


編輯:通過它的外觀,$arrQuestionId$arrOptionType不在功能範圍無論是。
global $qandaReplyType, $arrQuestionId, $arrOptionType;

0

MMMMMMM .....你的函數....試試這個:

function ExpandOptionType($option) { 
$qandaReplyType = "Single"; 
$options = explode('-', $option); 
if(count($options) > 1) { 
    $start = array_shift($options); 
    $end = array_shift($options); 
    do { 
     $options[] = $start; 
    }while(++$start <= $end); 
} 
else{ 
    $options = explode(' or ', $option); 
} 

if($qandaReplyType == 'Single'){ 
foreach($options as $indivOption) { 
    echo '<div class="ck-button"><label class="fixedLabelCheckbox"><input type="radio" 
    name="options_<?php echo $key; ?>[]" id="option-' . $indivOption . '" value="' . 
$indivOption . '" /><span>' . $indivOption . '</span></label></div>'; 
} 
}else if($qandaReplyType == 'Multiple'){ 
     foreach($options as $indivOption) { 
    echo '<div class="ck-button"><label class="fixedLabelCheckbox"><input type="checkbox" name="options_<?php echo $key; ?>[]" id="option-' . $indivOption . '" value="' . $indivOption . '" /><span>' . $indivOption . '</span></label></div>'; 
} 
} 
} 

如果一切正常,那麼$沒有定義qandaReplyType 「內部」 的功能....你應該找到一種方法來恢復值O也許另一個參數添加到函數並傳遞$ qandaReplyType值,如:

function ExpandOptionType($option,$qandaReplyType) 

Saludos;)