У меня есть основной экземпляр zend_config_xml, в котором хранится информация инвентаризации, например, какие продукты находятся на пополнении (replenish_departments), и какие продукты не могут быть переупорядочены (fashion_departments). (FYI наши продукты подразделяются на отделы, каждый отдел имеет уникальный альфа-код) Мой XML похож на:Итерация 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, но не для пополнения_депозитов.
Какая уловка здесь?
EDIT: Я обнаружил, что если я задаю $ inv_settings как массив внутри foreach, я могу выполнить итерацию без ошибки. На данный момент это метод, который я использую, но я все еще открыт для лучшего исправления.
Если ваш запрос XML, будет ли XPath не делать это для вас лучше? –
Возможно, но поскольку Zend_Config_Xml не имеет собственного метода xpath для доступа, он, вероятно, будет излишним здесь. – user280725
Как вы определяете $ inv_settings как массив? У меня такая же проблема, и 'foreach ((array) $ inv_settings-> replenish_departments как $ replenish_deptcode)' не решает. – Seb33300