我有一个基本的zend_config_xml实例,它存储一些库存信息,例如哪些产品在补货(replenish_departments)上,哪些产品不能重新排序(fashion_departments)。 (FYI我们的产品分为部门,每个部门都有一个独特的字母代码) 我的XML看起来类似于:只用1个子节点迭代zend_config_xml?
<inventory>
<settings>
<allow_backorders>1</allow_backorders>
<replenish_departments>
<department>M</department>
</replenish_departments>
<fashion_departments>
<department>MF</department>
<department>MS</department>
</fashion_departments>
</settings>
</inventory>
我需要什么,能够做的就是迅速判断一个给定的部门代码是在充值或时尚。我是想很简单(或因此我想):
foreach ($inv_settings->replenish_departments as $replenish_deptcode) {
if ($given_deptcode == $replenish_deptcode) return true;
}
不过,我发现的是,当有一个子节点,你不能遍历它。换句话说,这个代码为fashion_departments而不是replenish_departments。
这里有什么窍门?
编辑:我发现,如果我将foreach中的$ inv_settings作为一个数组进行类型转换,我可以迭代而不出错。目前,这是我正在使用的方法,但我仍然乐意提供更好的解决方案。
如果你查询XML,XPath会不会为你做得更好? – 2010-08-26 16:21:55
可能,但由于Zend_Config_Xml没有本地xpath方法来访问,它可能会在这里矫枉过正。 – user280725 2010-08-27 19:27:53
你如何将数组$ inv_settings作为一个数组?我有同样的问题,并且'foreach((array)$ inv_settings-> replenish_departments为$ replenish_deptcode)'不解决它。 – Seb33300 2014-06-30 10:13:31