0
$arrQuestionContent = array();
$arrAnswerFile = array();


while ($qandaqrystmt->fetch()) {
    $arrQuestionId[] = $qandaQuestionId;
    $arrQuestionContent[] = $qandaQuestionContent;
}

...

while ($imgqrystmt->fetch()) {
  $arrAnswer[] = $AnswerFile;
}

上面我有两个数组,它们从数据库中获取数据,arrQuestionContent[]获取所有问题,同时$arrAnswer[]获取每个问题的所有答案。

但是有些问题可能不包含答案,这导致Notice: Undefined offset:我的表中的每个问题行都不包含答案。

我的问题是,如果问题行不包含答案,我怎样才能让表格在列下显示一个空白行Answer

也有可能一个问题有多个答案。如果是这种情况,那么我希望具有多个答案的问题行能够将其所有答案包含Answer在问题行中的列下。目前,它只为假设有多个答案的问题行显示一个答案:

下面是表格:

    <table id="tableqanda" align="center" cellpadding="0" cellspacing="0" border="1">
    <thead>
    <tr>
        <th width="30%" class="question">Question</th>
        <th width="12%" class="images">Answer</th>
    </tr>
    </thead>
    <tbody>
        <?php
          foreach ($arrQuestionId as $key=>$question) {
        echo '<tr class="tableqandarow">'.PHP_EOL;
        echo '<td width="30%" class="question">'.htmlspecialchars($arrQuestionContent[$key]).'</td>' . PHP_EOL;
        echo '<td width="12%" class="images">'. ( empty ($arrAnswerFile[$key]) ) ? "&nbsp;" : htmlspecialchars( is_array( $arrAnswerFile[$key] ) ? implode(",", $arrAnswerFile[$key]) : $arrAnswerFile[$key] ) . '</td>' . PHP_EOL;
        echo '</tr>'.PHP_EOL;
        }
?>
    </tbody>
    </table>

更新:

显示表应该是什么样子的屏幕截图:

在此处输入图像描述

更新 2:

结果var_dump($arrQuestionContent);

array(2) { [0]=> string(19) "Name these 2 things" [1]=> string(11) "What is 4+4" }

结果var_dump($arrAnswerFile);

array(3) { 
[0]=> string(1) "A" 
[1]=> string(1) "C" 
[2]=> string(1) "A" 
}

下面是表格截图。无论问题是否有答案,都会发生这种情况:

在此处输入图像描述

数据库:

QuestionId  QuestionContent         Answer
1           Name these 2 Things     A
1           Name these 2 Things     C
2           What is 4+4?            A
4

3 回答 3

1

为了显示一个空单元格,您可以执行以下操作:

echo '<td>'. ( empty ($arrAnswerFile[$key]) ) ? "&nbsp;" : htmlspecialchars( $arrAnswerFile[$key] ) . '</td>' . PHP_EOL;

对于另一种情况,要显示多个答案,如何做商店主题?如果您的 $arrAnswerFile[$key] 变量是一个数组,您可以执行以下操作来解决它:

echo '<td>'. ( ( empty ($arrAnswerFile[$key]) ) ? "&nbsp;" : htmlspecialchars( is_array( $arrAnswerFile[$key] ) ? implode(",", $arrAnswerFile[$key]) : $arrAnswerFile[$key] ) ). '</td>' . PHP_EOL;

答案将以逗号分隔显示,但如果您以其他方式存储答案,请告诉我们,我们可以提出更好的解决方案

于 2013-01-20T12:36:50.040 回答
1

在我们的聊天讨论之后,我们修复了问题的一部分,即为每个问题分配每个答案,对于其余的,多个答案的情况,请使用以下代码:

while ($qandaqrystmt->fetch()) { 
    $arrQuestionId[ $qandaQuestionId ] = $qandaQuestionId; 
    $arrQuestionNo[ $qandaQuestionId ] = $qandaQuestionNo; 
    $arrQuestionContent[ $qandaQuestionId ] = $qandaQuestionContent; 
    $arrOptionType[ $qandaQuestionId ] = $qandaOptionType; 
}
...
while ($imgqrystmt->fetch()) { 
    $arrImageFile[ $imgQuestionId ][] = basename($imgImageFile); 
}

然后在 HTML 表格中显示元素,如下所示:

foreach ($arrQuestionId as $key=>$question) { 
    echo '<tr class="tableqandarow">'.PHP_EOL; 
    echo '<td width="5%" class="questionno">'.htmlspecialchars($arrQuestionNo[$key]).'</td>' . PHP_EOL; 
    echo '<td width="27%" class="question">'.htmlspecialchars($arrQuestionContent[$key]).'</td>' . PHP_EOL; 
    echo '<td width="7%" class="option">'.htmlspecialchars($arrOptionType[$key]).'</td>' . PHP_EOL; 
    echo '<td width="11%" class="imagetd">'. ( ( empty ($arrImageFile[$key]) ) ? "&nbsp;" : '<ul class="qandaul"><li>'.htmlspecialchars( is_array( $arrImageFile[$key] ) ? implode(" ", $arrImageFile[$key]) : $arrImageFile[$key] ) ). '</li></ul></td>' . PHP_EOL; 
    echo '</tr>'.PHP_EOL; 
    }

我希望这现在有效,如果不只是告诉我它给了我什么

于 2013-01-22T17:33:50.880 回答
0

不清楚如何设置变量 $qandaQuestionContent 和 $AnswerFile (获取值)。

也许您应该修改问题中提到的两个while循环以获得 $qandaQuestionContent 和 $AnswerFile 的值。

于 2013-01-20T12:36:16.917 回答