Php 原因是什么;注意:未初始化的字符串偏移量;出现?

Php 原因是什么;注意:未初始化的字符串偏移量;出现?,php,arrays,Php,Arrays,我有一张用户填写的表格,表格上有多个相同的字段,如“项目名称”、“项目日期”、“类别”等。根据用户提交的表格数量,我的目标是: 循环检查表单的数量 创建单个SQL insert语句 然而,PHP给了我一个我似乎不理解的提示: 注意: 注意:第90行的未初始化字符串偏移量:1…dataPasser.php PHP $myQuery = array(); if ($varsCount != 0) { for ($i=0; $i <= $varsCount; $i++) { $

我有一张用户填写的表格,表格上有多个相同的字段,如“项目名称”、“项目日期”、“类别”等。根据用户提交的表格数量,我的目标是:

  • 循环检查表单的数量
  • 创建单个SQL insert语句
  • 然而,PHP给了我一个我似乎不理解的提示:

    注意:

    注意:第90行的未初始化字符串偏移量:1…dataPasser.php

    PHP

    $myQuery = array();
    
    if ($varsCount != 0)
    {
      for ($i=0; $i <= $varsCount; $i++)
      {
        $var = "insert into projectData values ('" . $catagory[$i] . "', '" .  $task[$i] . "', '" . $fullText[$i] . "', '" . $dueDate[$i] . "', null, '" . $empId[$i] ."')";
        array_push($myQuery, $var);     
      }
    }
    
    $myQuery=array();
    如果($varscont!=0)
    {
    
    对于($i=0;$i),这意味着您的一个数组实际上不是数组


    顺便说一句,您的if检查是不必要的。如果$varscont为0,for循环无论如何都不会执行。

    如果以下任何变量实际上是字符串或null而不是数组,则会发生此错误,在这种情况下,使用数组语法访问它们。
    $var[$i]
    就像试图访问字符串中的特定字符:

    $catagory
    $task
    $fullText
    $dueDate
    $empId
    
    简而言之,插入查询中的所有内容


    也许
    $catagory
    变量拼写错误?

    在使用数组之前,请尝试测试并初始化数组:

    if( !isset($catagory[$i]) ) $catagory[$i] = '' ;
    if( !isset($task[$i]) ) $task[$i] = '' ;
    if( !isset($fullText[$i]) ) $fullText[$i] = '' ;
    if( !isset($dueDate[$i]) ) $dueDate[$i] = '' ;
    if( !isset($empId[$i]) ) $empId[$i] = '' ;
    
    如果
    $catagory[$i]
    不存在,则创建(未初始化)一个……仅此而已; =>PHP尝试读取您的表中的地址
    $i
    ,但是在这个地址,没有任何内容,这个地址不存在=>PHP返回一个通知,并且它不会向您输入任何字符串。 所以您的代码不是很干净,它占用了一些资源,降低了服务器的性能(只是很少)

    注意MySQL表的默认值

    if( !isset($dueDate[$i]) ) $dueDate[$i] = '0000-00-00 00:00:00' ;
    


    当迭代数组的次数大于数组的实际大小时,可能会发生错误。例如:

     $one="909";
     for($i=0;$i<10;$i++)
        echo ' '.$one[$i];
    
    $k = 2;
    $k[0];
    

    使用查看数组的内容

    echo '<pre>' . print_r( $arr, TRUE ) . '</pre>';
    
    echo''。打印($arr,TRUE)。'';
    
    是的,我以前看过这篇评论。不幸的是,我不明白它为什么不是数组?我正在将数据输出到FireHP中,我通过POST看到它,然后在变量中看到它。好的,谢谢,我只发布了一部分代码,以便于阅读。再次感谢!您在示例中遗漏了很多内容,但是var的输出是什么_dump($myQuery)?第90行在哪里?完整的通知是什么?我只想补充一点,您根本不需要在这里使用array\u push。只需这样做。$myQuery[]=$var;这个问题已经解决了,但我可能可以帮助喜欢我的人偶尔遇到这个错误,因为在动态调用类属性(即数组(或实现ArrayAccess))时,在访问它的一个元素的同时忘记包含花括号。例如,
    $This->$arrayMember[$index]
    将首先计算
    $arrayMember[$index]
    ;因此明确地表示动态成员名称部分,如下所示:
    $this->{$arrayMember}[$index]
    。伙计,我只想踢自己的头。当然!只有一个唯一的$empId。我专注于$myQuery数组,而没有注意其他数组。非常感谢!我将$empId[$i]更改为$empId,通知消失了,因为$empId不是数组。我想这里的部分困惑是在索引
    时$var[$i]
    它可以是字符串或数组…+1表示完美的Ans(Y)…!对,但是如果它应该是数组,
    如果(!isset($myarray[$i]))$myarray[$i]=array();
    也许?
    $k = 2;
    $k[0];
    
    echo '<pre>' . print_r( $arr, TRUE ) . '</pre>';