Fatal error: you cannot use an object of type DOMNodeList as an array

So, I spent a lot of time writing a script that perform a specific task. When I tested it on my local machine, it works fine. But when I upload it to my hosting, it gives me this error

Fatal error: Cannot use object of type DOMNodeList as array 

this is an example of what script do

 $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 } 

As I said, it works fine on my local machine, and I get an error when I run it on my hosting

I used this code to download the downloaded extensions because I thought the problem could be from there

 print_r(get_loaded_extensions()); 

And this is the result of my car

 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 ) 

and from my hosting

 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 ) 

I have no idea why I am getting an error

+6
source share
2 answers

Please read the documentation:

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

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

This is an object, not an array, which means you cannot use $ cells [0].

-1
source

getElementsByTagName() returns a DOMNodeList that implements ArrayAccess with PHP 5.6.3 . This allows you to access node through $cells[0] .

In previous versions, you would need to use the DOMNodeList item() method to access a specific index, for example. $cells->item(0) .

+13
source

All Articles