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

时间:2014-06-17 16:40:48

标签: php mysql xml

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

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

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

但相反,我只获得了14个文件,每个文件都有两个相似的记录。

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

<?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++;
}

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

1 个答案:

答案 0 :(得分:0)

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

老实说,听起来更像是一个错字,我看不出有什么不妥。 PHP就像你写的一样。