2011-12-10 4 views
1

このコードは、for文の最後の整数だけを追加します。 for文の各値に$ root_textを追加しようとしています。 $ root_textは配列であるはずですか? $ DOC->はcreateTextNode($ Iとの$ root_textを交換されて何がやっているappendChild foreach文を使用

<?php 
$doc = new DOMDocument('1.0', 'iso-8859-1'); 

$root = $doc->createElement('test'); 
$doc->appendChild($root); 

for($i = 1; $i <= 10; $i++) { 

    $root_text = $doc->createTextNode($i); 

} 

$root->appendChild($root_text); 

print $doc->saveXML(); 
?> 

答えて

1

あなたは現在、最後の反復からのノードのみ保持(そして最終的に追加)、ループを通る$root_textたびに新しい値を代入しています。単純にループ内でappendChildを使用しないのはなぜですか?

for($i = 1; $i <= 10; $i++) { 
    $test = $doc->createElement('test'); 
    $test->appendChild($doc->createTextNode($i)); 
    $root->appendChild($test); 
} 
+0

これでもforステートメントの各値のテストタグ。 –

+0

@RPM - 私はそれが必要条件であることを認識しませんでした。ループ本体でもその部分を実行してください。私の編集を参照してください。 –

+0

これはどこに記述しますか?私はエラーが発生しています:定義されていない関数を呼び出すappendChild() –

-2

:私はのみ>のappendChild($のroot_text)

コードを$ root-と1つの値を追加しています)を各サイクルで測定した。 あなたがしたいことは、$ root_textを配列にすることです。

<?php 
    $doc = new DOMDocument('1.0', 'iso-8859-1'); 

    $root = $doc->createElement('test'); 
    $doc->appendChild($root); 

    $root_text = array(); //always initialize arrays 
    for($i = 1; $i <= 10; $i++) { 
     $root_text[] = $doc->createTextNode($i); 
    } 

    //this will output the contents of $root_text so you can examine it 
    print_r($root_text); 

    $root->appendChild($root_text); 

    print $doc->saveXML(); 
?> 
+0

私はあなたのコードをテストしました。配列は出力されますが、XMLドキュメントのノードとして追加されません。 –

+0

これはエラーです:Catchable fatal error:DOMNode :: appendChild()に渡された引数1はDOMNodeのインスタンスでなければならず、配列15のC:\ xampp \ htdocs \ append_child.phpに与えられた配列 –