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++) { $
$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>';