在我的表中调用我的数据后,我有一个未定义的偏移量。不知怎的,我可以获得第一张唱片。但是,对于其他记录,我有一个错误通知,我有一个未定义的偏移量。
数据
Detail1 || ||响应1状态1 :: Detail2 || || RESPONSE2状态2 :: Detail3 || || Response3 :: STATUS3 || Detail4 || Response4 STATUS4 :: Detail5 || || Response5 :: STATUS5 Detail6 | | Response6 || STATUS6 :: Detail7 || || Response7 :: STATUS7 || Detail8 || Response8 :: STATUS8 || Detail9 || Response9 :: Status9 || Detail10 || Response10 :: Status10
运行代码时的结果:
Detail1
响应1
Detail2
RESPONSE2
Detail3
Response3
Detail4
Response4
Detail5
Response5
Detail6
Response6
Detail7
Response7
Detail8
Response8
Detail9
Response9
Detail10
Response10
注意:未定义的偏移量:第52行的C:\ xampp \ htdocs \ uploadexcel \ export.php中的1
代码:
$querydata = "SELECT DESCRIPTION from sample";
$resultdata = $conn->prepare($querydata);
$resultdata->execute();
$storeresult = $resultdata->fetchObject();
$resultquery = $storeresult->DESCRIPTION;
$pieces = explode("::",$resultquery);
$countVal = count($pieces);
$counter = 0;
while($counter<$countVal){
$pieces1 = explode("||", $pieces[$counter]);
$pieces2 = explode("||", $pieces[$counter]);
echo $pieces1[0]."<br>"; // detail
echo $pieces2[1]."<br>"; // response
$counter++;
$rowCount++;
}
你能帮我解决这个问题吗?我很困惑为什么我的代码显示错误,即使它执行正确。
答案 0 :(得分:1)
问题是数据字符串中的最后一个::。 $pieces
的最后一项将是一个空字符串 - &gt; $ pieces1将为null,因为没有什么可以爆炸。
如果$pieces[$counter]
不仅仅是&#39;&#39;那么只需在循环中添加一个测试:
<?php
$resultquery = <<<EOT
Detail1||Response1||Status1::Detail2||Response2||Status2::Detail3||Response3||Status3::Detail4||Response4||St::Detail5||Response5||Status5::Detail6||Response6||Status6::Detail7||Response7||Status7::Detail8||Response8||Status8::Detail9||Response9||Status9::Detail10||Response10||Status10::
EOT;
$pieces = explode("::",$resultquery);
$countVal = count($pieces);
$counter = 0;
$rowCount = 0;
while($counter<$countVal){
if($pieces[$counter]>'') {
$pieces1 = explode("||", $pieces[$counter]);
// $pieces2 = explode("||", $pieces[$counter]); // we don't need that. $pieces1 is the same as $pieces2
echo $pieces1[0]."<br>"; // detail
echo $pieces1[1]."<br>"; // response
}
$counter++;
$rowCount++;
}
答案 1 :(得分:0)
Notice: Undefined offset: 1 in C:\xampp\htdocs\uploadexcel\export.php on line 52
它是一个php 通知,而不是错误,因此您的脚本将仍然执行。
有关差异,请参阅PHP difference between notice and warning。
您的上次状态(Status10::
)缺少Detail
和Response
。因此,echo $pieces2[1]."<br>"; // response
确实抛出了这个通知,因为在最后一次迭代中,数组键1
不存在。
您可以在访问之前阻止通知检查arraykey:
if(isset($pieces2[1])) {
echo $pieces2[1]."<br>"; // response
}
你应该对$pieces2[0]
做同样的事情。
始终检查数组密钥,然后再访问它们。
答案 2 :(得分:-1)
使用foreach循环而不是直接访问数组以避免此类错误。您的问题出现了,因为您的上一个数组具有状态,但没有响应。
$pieces1 = explode("||", $pieces[$counter]);
foreach($pieces1 as $piece)
printf("%s <br />", $piece);