我正在使用simpleXML来解析xml文件,并希望使用foreach循环遍历这些元素,并在Yii模型的帮助下将其存储到mysql数据库中。
我有一个示例xml文件,其中包含1083个条目,每个条目都有三个属性。在Windows上使用PHP版本5.3.1时,它在数据库表中创建1208个条目,而不是1083.我试图在我的代码中找到问题,但经过几个小时的测试后,我决定在Windows上切换到PHP版本5.4.7。在此版本中,它创建了1083个正确的条目。但是我想找出问题究竟是什么,因为我需要找到一个解决方案,因为在Linux服务器上我的生产环境中我有PHP版本5.4.15-1也会创建错误的条目数。
这是xml的一些例子:
<listentries>
<listentry>
<name>downs</name>
<value>-1.5</value>
<type>STATIC</type>
</listentry>
<listentry>
<name>upcoming</name>
<value>1.0</value>
<type>STATIC</type>
</listentry>
...
</listentries>
所以我的问题是foreach循环过于频繁地迭代。
$list = simplexml_load_file($filename);
foreach($list->listentries->listentry as $entry){
$model = new Entry;
$model->name = $entry->name;
$model->value = $entry->value;
$model->type = $entry->type;
$model->save();
}
当回显列表元素的数量时,我得到1083.当使用计数器计算迭代时,我得到1208.所以有一些非常奇怪的事情正在发生。数据库中的1208个插入条目如下所示:每个条目至少插入一次,但有些条目插入两次。
有没有人知道这次行为准确来自哪里?
我发现当xml文件包含少于970个条目时,会完成正确的迭代次数。
导入包含1083个条目的xml后,我的配置和插入条目数:
所以看起来更新libxml会有所帮助!?