2016-03-07 108 views
6

所以我花了很多時間編寫腳本來完成特定任務,當我在本地機器上測試它時,它工作正常,但是當我上傳它我收留了它給我這個錯誤致命錯誤:不能使用類型爲DOMNodeList的對象作爲數組

Fatal error: Cannot use object of type DOMNodeList as array 

這是什麼樣的劇本做

$xml = new DOMDocument(); 
$xml->loadHTML($html); 

$xpath = new DOMXPath($xml); 
$table =$xpath->query("//*[@style='background: #aaaaaa']")->item(0); 



$rows = $table->getElementsByTagName("tr"); 

foreach ($rows as $row) { 
    if($row->getAttribute('align') === 'center') { 
    $cells = $row -> getElementsByTagName('td'); 

    // I GET THE ERROR FROM THIS LINE 
    $add = mysql_escape_string(utf8_decode($cells[0]->nodeValue)); 

    Some logic 

    } 

就像我說的,它工作正常我的本地機器上的一個樣本,而我得到的錯誤,當我在我的主機上運行它

我用這個代碼來獲取加載擴展,因爲我認爲這個問題可能是從那裏

print_r(get_loaded_extensions()); 

這是從我的機器

Array 
(
    [0] => Core 
    [1] => bcmath 
    [2] => calendar 
    [3] => ctype 
    [4] => date 
    [5] => ereg 
    [6] => filter 
    [7] => ftp 
    [8] => hash 
    [9] => iconv 
    [10] => json 
    [11] => mcrypt 
    [12] => SPL 
    [13] => odbc 
    [14] => pcre 
    [15] => Reflection 
    [16] => session 
    [17] => standard 
    [18] => mysqlnd 
    [19] => tokenizer 
    [20] => zip 
    [21] => zlib 
    [22] => libxml 
    [23] => dom 
    [24] => PDO 
    [25] => bz2 
    [26] => SimpleXML 
    [27] => wddx 
    [28] => xml 
    [29] => xmlreader 
    [30] => xmlwriter 
    [31] => apache2handler 
    [32] => openssl 
    [33] => curl 
    [34] => mbstring 
    [35] => exif 
    [36] => gd 
    [37] => gettext 
    [38] => intl 
    [39] => mysql 
    [40] => mysqli 
    [41] => Phar 
    [42] => pdo_mysql 
    [43] => pdo_sqlite 
    [44] => soap 
    [45] => sockets 
    [46] => sqlite3 
    [47] => xmlrpc 
    [48] => xsl 
    [49] => mhash 
) 

,並從我的託管結果

Array 
(
    [0] => Core 
    [1] => date 
    [2] => ereg 
    [3] => libxml 
    [4] => openssl 
    [5] => pcre 
    [6] => sqlite3 
    [7] => zlib 
    [8] => bcmath 
    [9] => bz2 
    [10] => calendar 
    [11] => ctype 
    [12] => curl 
    [13] => dom 
    [14] => hash 
    [15] => fileinfo 
    [16] => filter 
    [17] => ftp 
    [18] => gd 
    [19] => gettext 
    [20] => SPL 
    [21] => iconv 
    [22] => session 
    [23] => intl 
    [24] => json 
    [25] => mbstring 
    [26] => mcrypt 
    [27] => standard 
    [28] => mysql 
    [29] => mysqli 
    [30] => pgsql 
    [31] => mysqlnd 
    [32] => Phar 
    [33] => posix 
    [34] => pspell 
    [35] => Reflection 
    [36] => imap 
    [37] => SimpleXML 
    [38] => soap 
    [39] => sockets 
    [40] => exif 
    [41] => tidy 
    [42] => tokenizer 
    [43] => xml 
    [44] => xmlreader 
    [45] => xmlrpc 
    [46] => xmlwriter 
    [47] => xsl 
    [48] => zip 
    [49] => cgi-fcgi 
    [50] => PDO 
    [51] => pdo_sqlite 
    [52] => pdo_mysql 
    [53] => ionCube Loader 
    [54] => Zend Guard Loader 
) 

我不知道爲什麼我得到錯誤

+0

您確定您的本地和遠程機器配置方式相同嗎?圖書館和一切?當某件事在某個地方而不是另一個地方起作用時,這是第一個問題。 –

+0

我的本地機器是windows,我的主機是linux,請告訴我你想知道的其他配置,我會將它們發佈到 –

+1

這真是一個問題。有些圖書館在這兩個系統中的工作方式不同。如果你想要一個好的建議,在你的本地機器上安裝一個linux虛擬機並使用它開發。你會讓你的生活更輕鬆。 –

回答

-1

請閱讀文檔:

http://php.net/manual/en/domdocument.getelementsbytagname.php

This function returns a new instance of class DOMNodeList containing all the elements with a given local tag name.

它是一個對象,而不是一個數組,這意味着不能使用$細胞[0]。

+1

是的,我認爲相同,但爲什麼它在本地機器上工作? –

+0

不同的PHP版本,也許? –

+1

倒計時投票支持唯一的一個聲明,但沒有解決方案的上下文。這只是懶惰。我正在對OP進行投票,表示懶惰並接受了這一點。如果你真的決定更新答案,我會很高興,如果它能起作用,就可以對它投票。 – John

相關問題