0

次のような構造の場合

SimpleXMLElement Object
(
    [id] => https://itunes.apple.com/us/rss/topfreeapplications/limit=2/genre=6014/xml
    [title] => iTunes Store: Top Free Applications in Games
    [updated] => 2013-02-04T07:18:54-07:00    
    [icon] => http://itunes.apple.com/favicon.ico
    [entry] => Array
        (
            [0] => SimpleXMLElement Object
                (
                    [updated] => 2013-02-04T07:18:54-07:00
                    [id] => https://itunes.apple.com/us/app/whats-word-new-quiz-pics-words/id573511269?mt=8&uo=2
                    [title] => What is the Word? - new quiz with pics and words - RedSpell
                )

            [1] => SimpleXMLElement Object
                (
                    [updated] => 2013-02-04T07:18:54-07:00
                    [id] => https://itunes.apple.com/us/app/temple-run-2/id572395608?mt=8&uo=2
                    [title] => Temple Run 2 - Imangi Studios, LLC
                )
        )

)

entryentryノードはゲームを表すため、次のコードを使用してノードをターゲットにしています。

$xml = simplexml_load_file('the path to file');
foreach ($xml->entry as $val)
{                   
   $gameTitle = $val->title;    
   $gameLink = $val->id;
}

私が探しているもの

entryノードのインデックス ( 、 など) をターゲットに01ます2。すなわち

[0] => SimpleXMLElement Object // <-- this fella here, capture 0
(
     [updated] => 2013-02-04T07:18:54-07:00
     [id] => https://itunes.apple.com/us/app/whats-word-new-quiz-pics-words/id573511269?mt=8&uo=2
     [title] => What is the Word? - new quiz with pics and words - RedSpell                  
)
[1] => SimpleXMLElement Object // <-- this fella here, capture 1
(
     [updated] => 2013-02-04T07:18:54-07:00
     [id] => https://itunes.apple.com/us/app/temple-run-2/id572395608?mt=8&uo=2
     [title] => Temple Run 2 - Imangi Studios, LLC
)

何をしても、現在のノードのインデックスを取得できないようです。

アップデート

Code Viperをテストするためだけに

4

1 に答える 1

1

iteator_to_array2 番目のパラメーターを に設定するという関数を探していfalseます。

$entries = iterator_to_array($xml->entry, false);
foreach ($entries as $index => $val)
{
    $gameTitle = $val->title;
    echo "<p>$gameTitle</p><p>Index = $index</p>";

}

デモ。実際には、その関数を使用する必要はありません。カウントすることもできます。

$index = 0;
foreach ($xml->entry as $val)
{
    echo "<p>{$val->title}</p><p>Index = $index</p>";
    $index++;
}

デフォルトでは$key(コード例のように)はXML要素のタグ名です。したがって、デフォルトではインデックス番号には使用できません。

于 2013-02-06T00:44:30.923 に答える