У меня есть базовый экземпляр zend_config_xml, в котором хранится информация инвентаризации, например, какие продукты находятся на пополнении (replenish_departments), и какие продукты не могут быть переупорядочены (fashion_departments). (fyi наши продукты делятся на отделы, каждый отдел имеет уникальный альфа-код). Мой 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, я могу выполнить итерацию без ошибки. На данный момент это метод, который я использую, но я все еще открыт для лучшего исправления.