J'essaie de trouver un moyen de retourner la valeur de la clé parent d'une array.
Par exemple, de la matrice ci-dessous, j'aimerais connaître la clé du parent où $ Array ["ID '] = = "0002".
La clé parent est évidente car elle est définie ici (ce serait des "produits"), mais normalement, il serait dynamique, d'où le problème. L'identifiant et la valeur de 'id' est connue cependant. P>
3 Réponses :
une petite récursion brute, mais cela devrait fonctionner:
Je ne suis pas trop familier avec la récursion, mais j'ai codé une réponse similaire à cela, seulement j'ai utilisé une variable "statique" pour remplacer l'argument code> parent $> que vous utilisez. Est-ce de toute façon meilleure?
@Alex statique code> fonctionnerait probablement aussi bien. Je dois admettre que je ne suis pas une grande partie d'un utilisateur code> statique code>. :) Cela éliminerait la nécessité de passer le long de la variable supplémentaire. OTOH, dans la fonction ci-dessus, vous pouvez spécifier un parent "par défaut" ... que ce soit, je suppose. :)
Merci, je comprends les avantages de votre méthode. +1
Je suis curieux, y a-t-il une meilleure structure de données à utiliser au lieu d'un tableau si on a ce besoin? Cela fait longtemps que j'avais une bonne formation de programmation, mais une liste liée aurait-elle mieux fonctionner? De cette façon, vous n'avez pas à rechercher dans un tableau à chaque fois que vous souhaitez un parent donné (pensez à renvoyer tous les parents d'un enfant jusqu'à la racine). Cependant, je n'ai pas encore d'utiliser réellement des listes liées dans PHP. Peut-être qu'ils ne sont pas si faciles à faire?
function array_to_xml($array, $rootElement = null, $xml = null) { $_xml = $xml; if ($_xml === null) { $_xml = new SimpleXMLElement($rootElement !== null ? $rootElement : '<root/>'); } $has_int_key = 0; foreach ($array as $k => $v) { if (is_array($v)) { if(is_int($k)){ $this->array_to_xml($v, $k, $_xml->addChild($rootElement)); } else { foreach($v as $key=>$value) { if(is_int($key)) $has_int_key = 1; } if ($has_int_key) { $this->array_to_xml($v, $k, $_xml); } else { $this->array_to_xml($v, $k, $_xml->addChild($k)); } } } else { $_xml->addChild($k, $v); } } return $_xml->asXML(); }