XML文件上的多个PHP foreach循环保留以前foreach循环中的数据

XML文件上的多个PHP foreach循环保留以前foreach循环中的数据,php,xml,if-statement,foreach,Php,Xml,If Statement,Foreach,我目前正在使用PHP将一个xml文件拆分为多个较小的文件。为此,我从标题数组中创建新的xml文件,然后使用foreach循环遍历原始xml文件,并使用if语句检查每个“产品”的“子类别”是否与一个相关文件匹配,然后在if语句中添加相关数据 我的问题是,第一个文件只包含相关数据,但之后的每个文件都包含以前填充的文件中的数据,以及它自己的数据 下面的代码显示了这里的工作方式-我目前对每个子类别都有单独的foreach循环,但是我不知道为什么,例如,搜索子类别3会选择子类别1、子类别2和子类别3(尽管

我目前正在使用PHP将一个xml文件拆分为多个较小的文件。为此,我从标题数组中创建新的xml文件,然后使用foreach循环遍历原始xml文件,并使用if语句检查每个“产品”的“子类别”是否与一个相关文件匹配,然后在if语句中添加相关数据

我的问题是,第一个文件只包含相关数据,但之后的每个文件都包含以前填充的文件中的数据,以及它自己的数据

下面的代码显示了这里的工作方式-我目前对每个子类别都有单独的foreach循环,但是我不知道为什么,例如,搜索子类别3会选择子类别1、子类别2和子类别3(尽管我可能遗漏了一些相当明显的东西!)

任何帮助都将不胜感激-提前感谢各位


哦,我还对一些子类别使用了foreach循环,并对不同的子类别使用了if和elseif,但得到了相同的结果。

好的,我通过随机尝试解决了这个问题-我在任何foreach循环提取xml数据之前,在标题数组上使用foreach创建了新的xml文件。然而,当我删除了创建文件的循环并将它们分别放在提取数据的循环之前时,问题就消失了。在我看来,这似乎不合逻辑,但显然是这样的

foreach( $xml->product as $product )
{
    // Look for different subcategories
    if (strpos($product->category ,'subcategory1') !== false)
    {
        // write data to xml file and save
        $root = $xmlFile->createElement("product");
        $root = $xmlFile->appendChild($root);

        // These lines are repeated for the various nodes
        $xml_node = $xmlFile->createElement("node1");
        $xml_node = $root->appendChild($xml_node);
        $node1Text = $xmlFile->createTextNode($product->node1);
        $node1Text = $xml_node->appendChild($node1Text);

        // Re-save the xml file
        $xmlFile->save("file.xml");
    }
}