1

SimpleXMLElement があり、foreach ループを使用してループする前に、特定の要素に空白以外の値があるかどうかを確認したいと考えています。これが私のSimpleXMLObjectです

これが $myXMLElement に含まれているとします

SimpleXMLElement Object ( [f] => Array ( [0] => Marcus [1] => Smith [2] => Brown University [3] => 1243123200000 [4] => Masters [5] => TestValue [6] => TestValue2 [7] => 4 [8] => SimpleXMLElement Object ( [@attributes] => Array ( [id] => 16 ) ) [9] => 0 ) [update_id] => 1325795135203 )

配列内の値は

[3] => 1243123200000

これは、このパラメーターをチェックして、NULL ではないことを確認したいものです。それを文字列として取得したい場合、これを行う方法は何でしょうか。

(string)$myXMLElement[3] のようなものを望んでいましたが、それは私が試みているものの正しい構文ではないようです。

4

1 に答える 1

2

配列表記を使用できますが、配列はノードの一部であるため、次のfようにアクセスする必要があります。

$val = $xmlObj->f[3];

if (empty($val)) {
    // its empty
}

無関係なことに、その配列の8番目の要素自体がSimpleXMLオブジェクトであるため、次のようにその値にアクセスします。

$val = $xmlObj->f[8]->update_id;

このような場合は、オブジェクトアクセスと配列アクセスの表記を組み合わせただけです。

8番目の要素から属性を取得するには、配列表記を使用することもできます。

$id = $xmlObj->f[8]['id']; // get "id" attribute

Basic SimpleXML Usageのページには、SimpleXMLオブジェクトからさまざまな要素にアクセスする方法を示す非常に役立つ例がいくつかあります。例5は、属性にアクセスする方法を示しています。

于 2012-04-17T00:39:08.293 に答える