Array/SimpleXML

Résolu
Bonjour,

Pourquoi est ce que ça, ça ne marche pas :
function supress_dat_from_xml($entry_nb) {
$xml = new SimpleXMLElement('database.xml',null,true);
unset($xml->entry[$entry_nb]);
if($xml->asXML('database.xml')) { return true;} else {return false;}
}

Mais que ça, ça marche :
function supress_dat_from_xml() {
$xml = new SimpleXMLElement('database.xml',null,true);
unset($xml->entry[2]);
if($xml->asXML('database.xml')) { return true;} else {return false;}
}

Grmbl...

Merci d'avance :-)
Et bonne aprem !

3 réponses

  1. Résolu, par persévérance.
    J'ai ajouté l'attribut 'id' a mes <entry>.
    Je le génère automatiquement à la création du xml.
    Ainsi, je peux.. de manière lourde et fastidieuse (^^) parvenir à mes fins.

    function supress_dat_from_xml($entry_nb) {
    $xml = new SimpleXMLElement('database.xml',null,true);
    $i = 0;
    foreach($xml->entry as $content) {
    if($content['id'] == $entry_nb){
    unset($xml->entry[$i]);
    break;
    }
    $i++;
    }
    if($xml->asXML('database.xml')) { return true;} else {return false;}
    }
    1. Merci de ta réponse,

      J'ai fais un echo sur $entry_nb.
      Au vu de l'appel de la fonction, ça me donne bien le résultat "2". Qui est celui attendu, et ce sans autre caractère quelconque.

      Je n'arrive vraiment pas à comprendre où est le couac.

      Merci encore,
      Bonne soirée,

      Edit : Je viens aussi de tenter un is_numeric, qui me répond true.
      1. Vérifie qu'au moment ou tu appel ta fonction la valeur que tu lui fournis est valide/dans le bon format