未定义的偏移量:在php中获取数组时为32

未定义的偏移量:在php中获取数组时为32,php,html,arrays,mysqli,phpmyadmin,Php,Html,Arrays,Mysqli,Phpmyadmin,电流输出 我想要的输出是,如果数据库中用户的ACTCODE值为1,则它应该在课程考试行的输出中,如果在模块1行中为2,如果在模块2行中为3,依此类推 错误显示在这一行中 $rows[$row['USERID'][$row['ACTCODE']] 您读取的$row数组不正确。如果使用WHILE循环,则需要指定一个索引,并在循环的每个过程中递增该索引 <?php $uid = $_SESSION['UID'];

电流输出

我想要的输出是,如果数据库中用户的ACTCODE值为1,则它应该在课程考试行的输出中,如果在模块1行中为2,如果在模块2行中为3,依此类推

错误显示在这一行中 $rows[$row['USERID'][$row['ACTCODE']]

您读取的$row数组不正确。如果使用WHILE循环,则需要指定一个索引,并在循环的每个过程中递增该索引

<?php                                        
$uid  = $_SESSION['UID'];
$result = mysqli_query($conn,"SELECT user.*,score.* from `user` join score ON user.USERID=score.USERID WHERE user.USERID='$uid'  ");
if (!$result) {
     printf("Error: %s\n", mysqli_error($conn));
     exit();
}

function dataBlock($row) {
    return "<td>".$row['SCORE']."</td>".
           "<td>".$row['AVERAGE']."</td>".
           "<td>".$row['POINTS']."</td>";
 }

$numModules = 4;
$rows = [];
while($row = mysqli_fetch_array($result)) {
    $rows[$row['USERID']][$row['ACTCODE']].push(dataBlock($row));
}

foreach($rows as $row) {
    echo '<tr>';
    for ($k = 0 ; $k < $numModules; $k++) {
        echo $row[$k];
    }
    echo '</tr>';
}?>
原因是,当您分配来自数据库的输出时,$row成为一个数组,并且从数据库检索到的每一行都作为数组元素进行索引。print_r$行将显示类似的内容:

$i = 0;
while($row = mysqli_fetch_array($result)) 
{
  $rows[$row[$i]['USERID']][$row[$i]['ACTCODE']].push(dataBlock($row));
  $i++;
}

这只是一个粗略的例子,但它有助于更好地可视化解释

。实际需要的是$rows[$row['USERID'][$row['ACTCODE']][]=dataBlock$row;尝试代码后,有一个未定义的偏移量错误:echo$row[$k]中的0@NickIn表示,foreach,$row将是一个数组,它由数据库中的ACTCODE值索引。所以不能保证它的索引为0。您可能应该改用foreach,例如foreach$row作为$v{echo$v;}这是不正确的$行将是一个包含键USERID、ACTCODE等的数组。是和否。键实际上是USERID、ACTCODE和查询结果中的任何其他内容,但$row将使用行号进行索引。否则,将无法在数组中获得结果的特定行。执行打印\u r$行可以确认这一点
$row => array(
   [0] => array(
      [USERID] => row 0 content 1
      [ACTCODE] => row 0 content 2
      )
   [1] => array(
      [USERID] => row 1 content 1
      [ACTCODE] => row 1 content 2
      )
   [2] => array(
      [USERID] => row 2 content 1
      [ACTCODE] => row 2 content 2
      )
)