J'ai une instance de base de zend_config_xml qui stocke des informations d'inventaire telles que les produits en cours de réapprovisionnement (replenish_departments) par rapport aux produits qui ne peuvent pas être réorganisés (fashion_departments). (FYI nos produits sont classés dans les départements, chaque département a un code alpha unique) Mon xml ressemble à:Itérer zend_config_xml avec seulement 1 nœud enfant?
<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>
Ce que je dois être en mesure de faire est de dire rapidement si un code de service donné est Replenish ou la mode. Ce que je voulais était simple (ce que je pensais):
foreach ($inv_settings->replenish_departments as $replenish_deptcode) {
if ($given_deptcode == $replenish_deptcode) return true;
}
Cependant, ce que j'ai découvert que quand il y a un seul nœud enfant, vous ne pouvez pas itérer à travers elle. En d'autres termes, ce mot de code pour fashion_departments, mais pas replenish_departments.
Quel est le truc ici?
EDIT: J'ai découvert que si je typifiais $ inv_settings en tant que tableau à l'intérieur du foreach, je suis capable d'itérer sans erreur. Pour l'instant, c'est la méthode que j'utilise, mais je suis toujours ouvert à une meilleure solution.
Si vous interrogez XML, XPath ne le ferait-il pas mieux pour vous? –
Peut-être, mais puisque Zend_Config_Xml n'a pas de méthode xpath natif pour accéder, il serait probablement exagéré ici. – user280725
Comment typiez-vous $ inv_settings en tableau? J'ai le même problème, et 'foreach ((array) $ inv_settings-> replenish_departments que $ replenish_deptcode)' ne le résout pas. – Seb33300