【问题标题】:Foreach loop only runs onceForeach 循环只运行一次
【发布时间】:2013-11-28 13:21:30
【问题描述】:

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 应该只包含一个。这正是它的作用:

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
)

所以在第二个 foreach 循环中,它应该将每个元素连同它的键一起获取并攻击它到节点,但它只运行一次。如果我在 foreach 循环中转储 $key 和 $value,我只会得到 2 个值,0 和 11。这是正确的,但它应该运行 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"
  }
}

【问题讨论】:

  • 你能 var_dump 你的 $content 变量吗?
  • 当然,添加到startpost中
  • 您是否在代码中的某处使用$c 作为参考? (&$c)

标签: php


【解决方案1】:

改变

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

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

根据您的 $content 数组,$node->appendChild($dom->createElement($key, $value)); 中的 $key$value 是什么

【讨论】:

  • thx,这也是一个错误,但它并没有解决我的 foreach 循环问题
【解决方案2】:

试试这个:

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

        }

这应该做你想做的事。如果我理解正确

【讨论】:

  • 不,这不是问题,我自己已经解决了,是 XML 的问题,我尝试添加一个数字作为孩子不起作用。^^ 仍然感谢。
【解决方案3】:

没关系,我只是愚蠢,我发现了问题:第一个索引是“0”。 XML 名称不能是数字,因此整个脚本只在第二个 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 

也许这对某人有帮助。^^

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-27
    • 2020-02-01
    • 2014-12-29
    • 2018-05-02
    相关资源
    最近更新 更多