2

foreach ループで問題が発生しました。問題は次のとおりです。

foreach($content as $c) {
    $root->appendChild($node = $dom->createElement($table));
    $node->setAttribute("id", $content['id']);

    foreach($c as $key => $value) {
        $node->appendChild($dom->createElement($key, $value));
    }
}

$content には、テーブルのすべてのデータ セットが含まれます。したがって、$c には 1 つだけを含める必要があります。そしてそれはまさにそれがすることです:

Array
(
    [0] => 11
    [id] => 11
    [1] => admin
    [username] => admin
    [2] => $2a$08$tpTWqFtZq1KzyIfD/UYI2u5iyGQw.m0.TGJSWx5gwsb/RaJAmdULK
    [password] => $2a$08$tpTWqFtZq1KzyIfD/UYI2u5iyGQw.m0.TGJSWx5gwsb/RaJAmdULK
    [3] => 
    [group] => 
    [4] => 0
    [deleted] => 0
)

したがって、2 番目の foreach ループでは、すべての単一要素をそのキーと一緒に取得し、それをノードに攻撃する必要がありますが、実行は 1 回だけです。foreach ループ内で $key と $value をダンプすると、0 と 11 の 2 つの値しか取得できません。これは正しいですが、1 回だけでなく 8 回実行する必要があります。私のエラーがどこにあるのか誰か教えてもらえますか?

$content の編集/コンテンツ:

array(2) {
  [0]=>
  array(10) {
    [0]=>
    string(2) "11"
    ["id"]=>
    string(2) "11"
    [1]=>
    string(5) "admin"
    ["username"]=>
    string(5) "admin"
    [2]=>
    string(60) "$2a$08$tpTWqFtZq1KzyIfD/UYI2u5iyGQw.m0.TGJSWx5gwsb/RaJAmdULK"
    ["password"]=>
    string(60) "$2a$08$tpTWqFtZq1KzyIfD/UYI2u5iyGQw.m0.TGJSWx5gwsb/RaJAmdULK"
    [3]=>
    string(0) ""
    ["group"]=>
    string(0) ""
    [4]=>
    string(1) "0"
    ["deleted"]=>
    string(1) "0"
  }
  [1]=>
  array(10) {
    [0]=>
    string(2) "25"
    ["id"]=>
    string(2) "25"
    [1]=>
    string(6) "mlange"
    ["username"]=>
    string(6) "mlange"
    [2]=>
    string(60) "$2a$08$X/fDcVsbrIE3sAHjU44aNOxQPe2Gg2wRDdd/YeRFT54rmdNucbJ5e"
    ["password"]=>
    string(60) "$2a$08$X/fDcVsbrIE3sAHjU44aNOxQPe2Gg2wRDdd/YeRFT54rmdNucbJ5e"
    [3]=>
    string(0) ""
    ["group"]=>
    string(0) ""
    [4]=>
    string(1) "0"
    ["deleted"]=>
    string(1) "0"
  }
}
4

3 に答える 3

1

変化する

$node->setAttribute("id", $content['id']);

$node->setAttribute("id", $c['id']);

あなたの $content 配列ごとに何が$keyありますか$value$node->appendChild($dom->createElement($key, $value));

于 2013-11-15T08:01:50.743 に答える
1

これを試して:

     foreach($content as $key => $value) {
          $root->appendChild($node = $dom->createElement($table));
          $node->setAttribute("id", $key['id']);
          $node->appendChild($dom->createElement($key, $value)); 

        }

これはあなたが望むことをするはずです。私が正しく理解していれば

于 2013-11-15T08:30:40.900 に答える
0

気にしないでください、私はただ愚かです、私は問題を見つけました:最初のインデックスは「0」です。XML 名を数字にすることはできないため、スクリプト全体は 2 番目の foreach ループの「appendChild」の後で終了します。エラー報告をオンにするのを忘れて、エラーではなく構文エラーだと思いました...まあ、私はただ遅れています。エラーは次のとおりです。

generate_xml.php:0 Fatal error: Uncaught exception 'DOMException' with message 'Invalid
Character Error' in /srv/www/htdocs/ksoldner/Projekt_Vertragsverwaltung/generate_xml.php
on line 23 DOMException: Invalid Character Error in generate_xml.php on line 23 Call 
Stack: 0.0003 640480 1. {main}() /srv/www/htdocs/ksoldner/Projekt_Vertragsverwaltung
/generate_xml.php:0 0.0066 1265680 2. DOMDocument->createElement() generate_xml.php:23 

どなたかの参考になれば幸いです(^^)

于 2013-11-15T08:22:53.677 に答える