2011-09-05 21 views
2

我想對SimpleXML元素進行計數。它在PHP 5.3和PHP 5.2上給了我不同的結果。我的代碼看起來像如下:PHP 5.3 SimpleXML到數組類型投射問題

$xml = new SimpleXMLElement('<command action="foo"/>'); 
print_r(count((array)$xml->children()));` 

在PHP 5.2以上版畫「1」,並在PHP 5.3將打印「0」 :( 我知道我可以使用$xml->count但這並不伊諾考慮到根元素的XML。

只是想知道什麼可能是錯誤的類型鑄造SimpleXML來陣列在PHP 5.3

+1

如何只'回聲計數(XML的$>的孩子());' – ajreal

+0

沒有孩子,無論哪個PHP版本。 –

回答

0

好,SimpleXMLElement::children()將根據手動總是返回一個SimpleXMLElement實例。

它根據var_dump做。

但作爲命令沒有子,返回的對象具有其產生至0 when casting to array沒有可訪問的屬性:

如果對象被轉換成一個陣列,其結果是一個數組,其 元素是該對象的屬性。密鑰是成員變量 的名稱,但有一些值得注意的例外:整數屬性爲 無法訪問;私有變量的類名前加 變量名;受保護變量的變量名前加'*'作爲前綴。這些前置值在任一側都有空字節。

對於5.2 to 5.3找不到任何關於更改類型轉換爲數組的內容。

所以這可能(可能)是一個錯誤......