php - for循环将两个相似的条目放入php的一个循环中

标签 php mysql xml

我编写了一段代码,根据该代码,我可以根据记录数将一个 XML 文件写入多个 XML 文件。

我在一个 XML 文件中有 14 条记录,在 XML 文件中具有不同的标签。

我正在尝试创建每个有 2 条记录的 XML 文件,所以最终我应该有 7 个 XML 文件。

但我只收到 14 个文件,每个文件都有两个相似的记录。

以下是我的 XML 格式,它是动态创建的。格式正确。但每个文件中都有两个相似的条目。因此,它写入了 14 个文件,而不是 7 个文件。

<?xml version="1.0"?>
<data>
  <Product>
    <PID>SGLDN7XJ2FPZH8G8</PID>
    <PNAME>Miami Blues Aviator Sunglasses</PNAME>
  </Product>
</data>

以下是我正在制作 XML 文件的文件。我认为初始化 for 循环有问题:

$docOutput = new DOMDocument("1.0");

$root = $docOutput->createElement("data");
$docOutput->appendChild($root);

if (!$sxmlReading = simplexml_load_file('firstxml.xml')) {
    throw new RuntimeException('Error reading XML file');
}

$x      = 0;
foreach ($sxmlReading as $syn) {

    for ($i = $x * 2; $i < ($x + 1) * 2; $i++) {

        $id     = $docOutput->createElement("PID");

        $idText = $docOutput->createTextNode($syn->productId);
        $id->appendChild($idText);

        $title     = $docOutput->createElement("PNAME");
        $titleText = $docOutput->createTextNode($syn->productname);
        $title->appendChild($titleText);

        $book = $docOutput->createElement("Product");
        $book->appendChild($id);
        $book->appendChild($title);

        $root->appendChild($book);

        $docOutput->formatOutput = true;
        echo "<xmp>" . $docOutput->saveXML() . "</xmp>";

        $docOutput->save("xml$x.xml") or die("Error");

    }
    $x++;
}

请检查代码并突出显示我的错误...

最佳答案

它正在写入 14 个文件,因为您正在调用 DOMDocument::save()方法14次。

老实说,这对我来说更像是一个错字,我看不出有什么问题。 PHP 只是按照您编写的方式执行操作。

关于php - for循环将两个相似的条目放入php的一个循环中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24269156/

相关文章:

php - Mysql PK 和 FK char(36) 与 int(10)

mysql - 如何使用 SQL 更改 mysql 服务器日期

mysql - mysql中的多列不同

java - 使用 HashMap 比较字符串

php - dompdf 错误无法解决这个问题

php - 如何在实体表单类型中包含来自另一个实体的一些字段?

php - 具有多个随机值但总和始终在一个范围内的 MySQL 查询

php - 使用字符集 utf-8 时出错

java - 如何更改谷歌地图标记上方标题和 fragment 的设计

javascript:在 xml 中搜索节点并从该节点获取数组