Laravel开发:foreach循环出现Trying to access array offset on null错误求助
解决「Trying to access array offset on value of type null」错误
错误直接原因:你把
$aanwezigheid = $row['aanwezigheid'];写在了while循环外面。当while循环结束时,$result->fetch_assoc()会返回false,此时$row变为null,再去访问它的数组偏移量必然触发报错。逻辑问题:你原本想收集每位员工的
aanwezigheid值,但当前写法只在循环结束后尝试获取一次,此时已无有效数据;另外因为用了LEFT JOIN,部分员工可能没有对应的aanwezigheid记录,该字段值会是null,也需要提前处理。修正后的代码:
<?php require "dbconnect.php"; $sql = "SELECT * FROM medewerkers LEFT JOIN aanwezigheid ON medewerkers.ID=aanwezigheid.ID;"; $aanw = []; // 提前初始化数组,避免未定义警告 if($result = $conn->query($sql)){ echo "<table>"; // 补充完整表格标签 while($row = $result->fetch_assoc()) { echo "<tr>"; // 输出员工姓名 echo "<td>" . $row['voornaam'] . " " . $row['achternaam'] . "</td>"; // 处理出勤状态,兼容null值 $aanwezigheid = $row['aanwezigheid'] ?? null; $aanw[] = $aanwezigheid; // 直接在当前行输出状态图标,和员工姓名对应 echo "<td>"; if($aanwezigheid === 1){ echo '<img src="image/kruismark.png">'; }elseif($aanwezigheid === 0){ echo '<img src="image/Checkmark.png">'; }else{ // 无出勤记录时的默认显示 echo "无记录"; } echo "</td>"; echo "</tr>"; } echo "</table>"; // 若后续需单独处理$aanw数组,可保留以下代码 // foreach($aanw as $status){ // // 自定义逻辑 // } } ?>
- 关键改动说明:
- 将
$aanwezigheid的赋值和数组添加逻辑移到while循环内部,确保每一行员工数据都被处理; - 使用
??空合并运算符处理可能的null值,避免后续判断出错; - 修正HTML结构,把状态图标放到员工姓名所在的表格行中,保证展示逻辑合理;
- 移除echo语句中多余的引号,避免HTML语法错误。
- 将
内容的提问来源于stack exchange,提问作者Diabel
相关产品推荐
相关产品推荐

