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



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

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

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

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");
}
}

如果有任何帮助,我们将不胜感激——提前感谢各位!

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

好的,我只是尝试了一些随机的东西就解决了这个问题——在任何foreach循环提取xml数据之前,我已经在标题数组上使用foreach创建了新的xml文件。然而,当我删除循环来创建文件,并将它们单独放在循环之前提取数据时,问题就消失了。在我看来,这似乎不符合逻辑,但显然就是这样!

最新更新