Php 写入文件时未定义的偏移量

Php 写入文件时未定义的偏移量,php,Php,我正在尝试使用PHP写入文件。我正在从数组中写入数据 这是我的密码: $subject = $_SESSION['subject']; $section = $_SESSION['section']; $exam1 = $_SESSION['exam1']; $exam2 = $_SESSION['exam2']; $finalexam = $_SESSION['finalexam']; $average = $_SESSION['average'

我正在尝试使用PHP写入文件。我正在从数组中写入数据

这是我的密码:

    $subject = $_SESSION['subject'];
    $section = $_SESSION['section'];
    $exam1 = $_SESSION['exam1'];
    $exam2 = $_SESSION['exam2'];
    $finalexam = $_SESSION['finalexam'];
    $average = $_SESSION['average'];

    $studentArray = $_SESSION['stringArray'];

    $file = $subject . "-" . $section . ".txt";
    $fh = fopen($file, 'a');
    $size = sizeof($studentArray);
    for($i = 0; $i<$size; $i++){
        fwrite($fh, $studentArray[$i] . " " . $exam1[$i] . " " . $exam2[$i] . " " .       $finalexam[$i] . " " . $average[$i] . " ");
}
第26行是在for循环中具有fwrite的行。 总是会有一个通知,但代码会正确写入文件。
是否可以执行任何操作来删除/解决通知/错误?

其中一个数组在
5处没有索引。我建议在使用之前先使用
isset()

例如,对于您的课程,我会:

$subject = isset($_SESSION['subject']) ? $_SESSION['subject'] : '';
与您的阵列相同。在使用数组之前,您需要检查它的索引。

您可以使用

方法1

array_key_exists('1',$studentArray); // check whether array position 1 exist in array $studentArray
方法2

if (isset($studentArray1])){
  // check whether array position 1 exist in array $studentArray
}

显然,您在fwrite中使用的其中一个数组没有#5元素,这意味着它们的大小与$studentArray不同。您的一个数组没有索引
5
的元素,即数组只有5个或更少的元素。如果生成的文件仍然正确,那将令人惊讶。谢谢大家。我现在明白了。我将尝试做一些事情:DYou应该切换到多维数组,这样您就可以将所有信息分组,例如按学生分组。这也会减少像这样不匹配的机会。啊!我现在明白了。非常感谢。我会试着做点什么。
if (isset($studentArray1])){
  // check whether array position 1 exist in array $studentArray
}