Php 无法转换DomeElement

Php 无法转换DomeElement,php,arrays,dom,Php,Arrays,Dom,我正在通过类名使用DOM解析元素。我正在使用以下函数检索信息: <?php function getElementsByClassName(DOMDocument $DOMDocument, $ClassName) { $Elements = $DOMDocument -> getElementsByTagName("*"); $Matched = array(); foreach($Elements as $node) { if( ! $n

我正在通过类名使用DOM解析元素。我正在使用以下函数检索信息:

<?php function getElementsByClassName(DOMDocument $DOMDocument, $ClassName) {
    $Elements = $DOMDocument -> getElementsByTagName("*");
    $Matched = array();

    foreach($Elements as $node) {
        if( ! $node -> hasAttributes())
            continue;
            $classAttribute = $node -> attributes -> getNamedItem('class');

        if( ! $classAttribute)
            continue;
            $classes = explode(' ', $classAttribute -> nodeValue);

        if(in_array($ClassName, $classes))
            $Matched[] = $node;
    }

  return $Matched;
}

?>
当回显$price时,它证实了我的假设,即它是一个数组

使用print_r($price);,数组显示如下内容,其中包含19个不同的变量,即应包含的确切数量:

Array ( [0] => DOMElement Object ( ) [1] => DOMElement Object ( ) [2] => DOMElement Object ( ) [3] => DOMElement Object ( ) [4] => DOMElement Object ( ) [5] => DOMElement Object ( ) [6] => DOMElement Object ( ) [7] => DOMElement Object ( ) [8] => DOMElement Object ( ) [9] => DOMElement Object ( ) [10] => DOMElement Object ( ) [11] => DOMElement Object ( ) [12] => DOMElement Object ( ) [13] => DOMElement Object ( ) [14] => DOMElement Object ( ) [15] => DOMElement Object ( ) [16] => DOMElement Object ( ) [17] => DOMElement Object ( ) [18] => DOMElement Object ( ) ) 
但是,当我尝试将此数组用作字符串时,会出现以下错误:

echo $price[5];
Catchable fatal error: Object of class DOMElement could not be converted to string

我很难弄明白为什么不能转换成字符串?任何帮助都将不胜感激

因为
domeElement
不是字符串,也没有“magic”
\uu toString()
方法

首先是的PHP文档,它是的一个子类。后者有一个
nodeValue
和一个
textContent
属性,因此您可以尝试:

$priceValue = $price[5]->nodeValue


您甚至可以进一步检索实际的文本节点子节点,但这可能超出了您的需要,并且只会使事情变得复杂(尤其是对于只读访问)。

我必须说,您的函数
getElementsByClassName
完全没有必要

使用PHP的DOM库检索属于某个类的所有节点可以使用XPath轻松完成

例如,如下所示(假设
$dom
是您的dom结构对象):

$priceValue = $price[5]->nodeValue
$priceValue = $price[5]->textContent
$prices = array();

foreach((new DOMXPath($dom))->query('//*[@class="amount"]') as $price) {
   $prices[] = $price->nodeValue;
}