2011-06-15 10 views
0
Array ([0] => 
    SimpleXMLElement Object ([record] => 
    SimpleXMLElement Object ([f] => 
          Array ([0] => Company 
            [1] => Company 
            [2] => Mark Test 
            [3] => Intern 
            [4] => Administrative 
            [5] => Account 
            [6] => img.png 
            [7] => SimpleXMLElement Object ([@attributes] => Array ([id] => 18)) 
            [8] => SimpleXMLElement Object ([@attributes] => Array ([id] => 21)) 
            [9] => [email protected] 
            [10] => SimpleXMLElement Object ([@attributes] => Array ([id] => 178)) 
            [11] => SimpleXMLElement Object ([@attributes] => Array ([id] => 177)) 
            [12] => SimpleXMLElement Object ([@attributes] => Array ([id] => 179)) 
            [13] => SimpleXMLElement Object ([@attributes] => Array ([id] => 168))) 
          [update_id] => 12102222262043))) 

これは基本的に私が単純に操作してf要素から始まるデータを取り出したいsimplexmlobject配列です。私はCompany、Mark Test、Internのような語を配列に格納したい。私はどのようにPHPでforeachループでこれを行うと仮定しているのか分からないようで、これの構造はとても狂っています。 getUsers()私のコードの一部で、私はこれをしなかった、このデータのすべての値を取得するSimpleXMLElementオブジェクトを配列に格納する際に問題が発生する

まあは私のSimpleXMLを与えるサービスへのAPI呼び出しを行います。

$xml = $getUser->getUsers(); 
$records = $xml->xpath('//records'); 

print_r($records); 
+0

ですから、後にすべてのものを取り出したいと文書で 'F'含みますか?また、「配列」を囲んでいるものはどこから来たのでしょうか?この出力を生成したコードを投稿できますか? –

+0

はい私はそれらの要素をあまり複雑でない配列にしたいと思います。 – Novazero

+0

これはSimpleXMLの代わりにDOMDocumentを使う方が良いでしょう。私はDOMDomentを使ってサンプルを書くのがうれしいですが、SimpleXMLはこのようなものになるとちょっと混乱します...私は知っておく必要があります。実際にはSimpleXMLで大きなサイズのキャストをキャストしましたが、 PHP 5.4リリースまで。 –

答えて

1

をのDOMDocumentクラスはA振る舞いますまず、負荷

...(あなたが少し複雑何かをしたい)、このようなケースでのSimpleXMLよりも少し良く文書:

$dom = new DOMDocument(); 
$dom->load($filename); 

その後、すべての<records>のノードを取得:すべての<records>ノードの子を取得するには

// Get a list of all <records> nodes which you can then loop through with foreach 
$records = $dom->getElementsByTagName('records'); 

を:

$allChildren = array(); 
foreach ($records as $recordSet) { 
    foreach($recordSet->childNodes as $child) { 
    $allChildren[] = $child; 
    } 
} 

は、今あなたが最初<records><first_name>の値をしたいと言うことができますノード:

$value = $records->item(0)->getElementsByTagName('first_name')->item(0)->nodeValue; 

getElementsByTagNameの戻り値は、配列ではなく、DOMNodeListです。

Javascriptが分かっている場合、このクラスはDOMがJavascriptと非常によく似た動作をします。

も参照してください: http://www.php.net/manual/en/book.dom.php

+0

うまくいけば、 )あなたの時間と努力に感謝します。 – Novazero

+0

ようこそ。あなたがこのコードに関連する何かに執着したら、このスレッドに返信してください。私はジャンプして、私ができることを見ていきます。 –

+0

ええ、うまく働いて、私は感謝を期待しました:) – Novazero

関連する問題