2013-08-31 108 views
1

我不知道爲什麼下面的代碼表明我PHP 5.2的錯誤消息,但它是在PHP 5.4PHP版本號問題

$f_channelList = array(); 
    $f_channelCounter = 0; 
    $f_channel = null; 
    foreach ($f_pageContent->find("div.col") as $f_channelSchedule){ 
     $f_channel = $f_channelSchedule->find("h2.logo")[0];//error here 
     if(trim($f_channel->plaintext) != " " && strlen(trim($f_channel->plaintext))>0){ 
      if($f_channelCounter == 0){ 
       mkdir($folderName); 
      } 
      array_push($f_channelList, $f_channel->plaintext); 
      $f_fileName = $folderName . "/" . trim($f_channelList[$f_channelCounter]) . ".txt"; 
      $f_programFile = fopen($f_fileName, "x"); 
      $f_fileContent = $f_channelSchedule->find("dl")[0]->outertext; 
      fwrite($f_programFile, $f_fileContent); 
      fclose($f_programFile); 
      $f_channelCounter++; 
     } 
    } 

也可以正常使用,我使用simple_html_dom.php(HTML解析器api)在我的代碼解析一個HTML頁面。當我運行PHP 5.2的代碼就說明我在「//錯誤在這裏」說明錯誤消息「的行號67解析錯誤」

感謝您遇到

+0

我已經把一個註釋行之後 - '$ f_channel = $ f_channelSchedule->找到( 「h2.logo」)[0]; //錯誤here' – codeomnitrix

回答

1

$f_channel = $f_channelSchedule->find("h2.logo")[0]; 
               ^^^ 

數組解引用是一個PHP 5.4+的功能,這就是爲什麼你得到這個錯誤。你必須,如果你想這個代碼在PHP的先前版本的工作,使用一個臨時變量:

$temp = $f_channelSchedule->find("h2.logo"); 
$f_channel = $temp[0]; 

參考PHP manual瞭解更多詳情。

+0

@codeomnitrix:很高興我能幫助! :) –

1

你不能像php 5.2那樣訪問函數調用的結果。

按照manual

作爲PHP 5.4的能夠陣列直接解引用一個 函數或方法調用的結果。之前只能使用 臨時變量。