2010-11-23 10 views
0

Ich glaube, ich habe Teil eines früheren Problems gelöst und jetzt haben die foreach-Schleife richtig? Trotzdem kann ich das XML nicht speichern.gespeicherte Werte in Xml in PHP speichern

$objXML = new SimpleXMLElement(XML_FILE_NAME, null, true); 
foreach($objXML->xpath('/root/gallery/@name') as $key => $old){ 
    $new = $_POST['name'][$key]; 
    echo "$key : $old : $new<br />\n"; 
    $old = $new; // this does nothing?? 
    } 
$objXML->asXML(XML_FILE_NAME); 

Echo zurückkehrt:
0: Erstens: zuerst Neue
1: Zweiter: Zweiter New
2: Third: Third New

Warum dies die neuen gebuchten Werte nicht speichern für "Name" zurück zu meinem XML-Dokument, was mache ich falsch?

Antwort

1

Sie sind in einer Schleife.

Diese jedes Mal bedeutet die Schleife zu einem anderen Punkt kommt zurück$key und $old ihre jeweiligen neuen Werte erhalten.

Ich denke, das ist, was Sie erreichen wollen (aber ich bin nicht sicher, ob ich Sie Ihr Ziel hier bekam)

foreach($objXML->xpath('/root/gallery/@name') as $key => $value){ 
    $new = $_POST['name'][$key]; 
    echo "$key : $old : $new<br />\n"; 
    $old = $value; 
} 

Von Ihrem Kommentar:

You can test it here.

$objXML = new SimpleXMLElement(XML_FILE_NAME, null, true); 

$galleryLore = $objXML->gallery; // finding gallery 
$i = 0; 
foreach($galleryLore as $gallery){ 
    unset($gallery['name']); // We delete the old name 
    $new = $_POST['name'][$i]; // We find the new name value 
    $gallery->addAttribute('name', $new); // We add the new attribute we deleted before 
    $i++; 
} 
+0

Ich versuche, das Array der Werte von XPath (First, Second, Third) mit dem Array von Werten aus $ _POST ['Name' zu ersetzen ] (Erstes Neues, Zweites Neues, Drittes Neues). Dann speichern Sie diese Werte zurück in XML. – Andy

+0

danke, Ihre Lösung ist genau richtig !! – Andy