假设我有以下PHP函数:
function.php
<?php
function getDataInFile($PMTA_FILE){
$PMTA_DATE = date("Y-m-d");
$lineFromText = explode("\n", $PMTA_FILE);
$number_bar_charts = 13;
$row = 0;
$cate = "";
$total ="";
$fail = "";
$mailSuc = "";
$title = "";
foreach($lineFromText as $line){
if($row < $number_bar_charts){
$words = explode(";",$line);
$dateTime .= ','.$words[0];
if($title == ""){
$title = $words[0];
}
$cate .= ','."'$words[5]'";
$total .= ','.$words[6];
$fail .= ','.$words[7];
$mailSuc .= ','.((int)$words[6] - (int)$words[7]);
$row++;
}
}
}
?>
以下是我在getFile.php
中调用函数的代码。
<?php
include("include/function.php");
$PMTA_DATE = date("Y-m-d");
getDataInFile("../stats_domain_recepteur.affinitead.net.".$PMTA_DATE.".txt");
?>
实际上,它无法从文件中读取数据,我收到错误消息Undefined variable: dateTime in C:\wamp\www\chat\include\function.php on line 15
,Notice: Undefined offset: 5 in C:\wamp\www\chat\include\function.php on line 19
....
我不知道如何解决这个问题,任何人都请帮助我,谢谢。
答案 0 :(得分:0)
这些只是通知。它们不是可怕的错误会破坏你的代码,但是一些代码审查者会让你修复它们。 PHP只是给你一个礼貌的轻推,但无论如何都会工作。致命错误是阻碍PHP发展的重大问题。
以下是PHP发现的问题......
您在每次迭代时将数据附加到字符串$ dateTime。在第一次通过变量时尚不存在。 PHP并不关心,但会发出警告。要摆脱这个问题,请在使用之前定义$ dateTime。
$dateTime = null;
第二个问题是数组越界异常。当数组索引不存在时,你正试图用$ words [5]做一些事情。通常,在尝试使用它们之前,应检查数组索引,变量和其他有趣的东西是否存在。
$cate .= sprintf(",'%s'", isset($word[5]) ? $word[5] : '');
如果您不希望在错误日志中看到通知和警告,请参阅PHP Error Handling以了解如何设置要在日志中查看的错误级别。
您还应该阅读有关file_get_contents函数的所有内容,以便首先实际获取该文件!
答案 1 :(得分:0)
添加$ dateTime ='';在foreach之前($ lineFromText为$ line){
这样可以正常使用。
答案 2 :(得分:0)
错误消息是100%合法的:您正在尝试使用之前尚未初始化的变量。将此代码放在循环上方,您将摆脱此错误:
$dateTime = '';
关于第二个错误 - 它告诉你数组中没有第6个元素,所以你最好用一个支票替换那个代码:
$cate .= sprintf(",'%s'", isset($word[5]) ? $word[5] : '');
将此检查外推到其他索引访问。