2012-12-14 48 views
-3

假設我有如下的PHP函數:獲取使用功能的文本文件中的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 15Notice: Undefined offset: 5 in C:\wamp\www\chat\include\function.php on line 19 ....

我不知道如何解決這個問題,誰能幫我請,謝謝。

+0

你有'$ dateTime。=','。$ words [0];'...但'$ dateTime'沒有在任何地方定義。您正在嘗試附加到它而不進行初始化。 – Aziz

+2

等等...我沒有看到任何試圖打開任何文件以將其內容讀入任何變量的單個函數調用。所以,即使你修復了'$ dateTime',你的代碼也無法按預期工作。 –

回答

0

這些只是聲明。他們不是可怕的錯誤,會炸燬你的代碼,但一些代碼審查人員會讓你修復它們。 PHP只是給你一個禮貌的微調,但無論如何將工作。致命錯誤是阻礙PHP發展的重大問題。

下面是發現的問題PHP ...

  1. 要追加數據在每次迭代字符串$日期時間。在第一次通過變量時尚不存在。 PHP並不在乎,但會發出警告。爲了擺脫這個問題,在使用它之前定義$ dateTime。

    $dateTime = null;

  2. 第二個問題是一個數組越界異常。當數組索引不存在時,您試圖用$ words來做某些事情[5]。一般來說,在嘗試使用它們之前,應該檢查數組索引,變量和其他有趣的東西。

    $cate .= sprintf(",'%s'", isset($word[5]) ? $word[5] : '');

如果你不希望看到在錯誤日誌中報預告或警告,見PHP Error Handling學習如何設定您想要在你的日誌,看看哪些錯誤級別。

您還應該閱讀關於file_get_contents函數的所有信息,以實際獲取文件!

0

add $ dateTime ='';在foreach之前($ lineFromText as $ line){

這會正常工作。

0

錯誤消息是100%合法的:您正嘗試使用之前未初始化的變量。將上述循環的代碼,你會擺脫這種錯誤的:

$dateTime = ''; 

關於第二個錯誤 - 它告訴你沒有數組中的6個元素,所以你最好更換帶有檢查的代碼:

$cate .= sprintf(",'%s'", isset($word[5]) ? $word[5] : ''); 

也可以將此檢查外推到其他索引訪問。

相關問題