• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Simplexml-Objekt zu int umwandeln

Basti93

Blogger
Guten Tag.

Ich habe ein kleines Problem mit Simplexml.


Mit folgendem Code lese ich eine Zahl aus einer XML-Datei aus und schreibe sie in eine Variable:

PHP:
<?php
$test = simplexml_load_file("beispiel.xml");
$zahl["test"] = $test -> zahl;
?>
beispiel.xml:

Code:
<test>
  <zahl>2.5</zahl>
</test>
Das Problem ist, das in $zahl["test"] nicht 2.5 sodern ein Objekt gespeichert wird.
$zahl["test"] ist also vom Typ object.
Deswegen kann ich $zahl["test"] nicht verwenden, um mit ihr zu rechnen.
Also muss ich $zahl["test"] in eine Variable vom Typ int umwandeln.

Allerdings will mir das einfach nicht gelingen!

Ich habe schon alle möglichen Möglichkeiten ausprobiert:

PHP:
$zahl["test"] = settype($zahl["test"], int);
oder

PHP:
$zahl["test"] = (int) $zahl["test"];
oder

PHP:
$zahl["test"] = $zahl["test"] + 0;
Aber egal welche Möglichkeit ich verwende: $zahl["test"] wird zwar zu int, aber ihr Wert ist 0.

Könntet mir einer dabei helfen, $zahl["test"] zu einer Varibale vom Typ int zu machen, die immer noch den Wert 2.5 hat?

Danke schon mal im voraus!
 
Zuletzt bearbeitet:
Werbung:
Werbung:
Klar sieht sie anders aus - ich habe sie auf das wesentliche reduziert und ein Beispiel gegeben.
Der ganze Rest drumherum würde wohl wenig nützen. (Aber lügen würde ich das nicht nennen.)

Aber aus deiner Aussage kann ich entnehmen, dass du einen Gedanken hast, woran es liegen könnte.
Darum schreibe ich hier einfach mal den ganzen Inhalt der XML-Datei rein:


preisliste.xml:

Code:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<preisliste>
  <grundpizza>
    <groesse1>4.00</groesse1>
    <groesse2>4.50</groesse2>
  </grundpizza>
  <belaege>
    <preiskategorie1>
      <groesse1>0.50</groesse1>
      <groesse2>0.70</groesse2>
    </preiskategorie1>
    <preiskategorie2>
      <groesse1>1.00</groesse1>
      <groesse2>1.30</groesse2>
    </preiskategorie2>
    <preiskategorie3>
      <groesse1>1.20</groesse1>
      <groesse2>1.60</groesse2>
    </preiskategorie3>
  </belaege>
</preisliste>
Und hier der Ausschnitt, der die Datei verarbeitet:

PHP:
class preise {

(...)

  protected function erstelle_preisliste() {


    $preisliste = simplexml_load_file($this -> preisliste_datei);

    // schreibt die Preise für Grundpizzen in ein globales Array
    $GLOBALS["preise_grundpizza"] = array();
    $GLOBALS["preise_grundpizza"]["groesse1"] = $preisliste -> grundpizza -> groesse1;
    $GLOBALS["preise_grundpizza"]["groesse2"] = $preisliste -> grundpizza -> groesse2;

    // schreibt die Preise für Beläge der Preiskategorie 1 in ein globales Array
    $GLOBALS["preise_belaege_preiskategorie1"] = array();
    $GLOBALS["preise_belaege_preiskategorie1"]["groesse1"] = $preisliste -> belaege -> preiskategorie1 -> groesse1;
    $GLOBALS["preise_belaege_preiskategorie1"]["groesse2"] = $preisliste -> belaege -> preiskategorie1 -> groesse2;

    // schreibt die Preise für Beläge der Preiskategorie 2 in ein globales Array
    $GLOBALS["preise_belaege_preiskategorie2"] = array();
    $GLOBALS["preise_belaege_preiskategorie2"]["groesse1"] = $preisliste -> belaege -> preiskategorie2 -> groesse1;
    $GLOBALS["preise_belaege_preiskategorie2"]["groesse2"] = $preisliste -> belaege -> preiskategorie2 -> groesse2;

    // schreibt die Preise für Beläge der Preiskategorie 3 in ein globales Array
    $GLOBALS["preise_belaege_preiskategorie3"] = array();
    $GLOBALS["preise_belaege_preiskategorie3"]["groesse1"] = $preisliste -> belaege -> preiskategorie3 -> groesse1;
    $GLOBALS["preise_belaege_preiskategorie3"]["groesse2"] = $preisliste -> belaege -> preiskategorie3 -> groesse2;


  }

(...)

}
Später soll dann mit diesen Preisen gerechnet werden.

Danke schon mal im voraus, das du versuchst, mir zu helfen. :)
 
Werbung:
Darf ich fragen wieso du sämtliche Werte in die Superglobale $GLOBALS schiebst anstatt dafür eine Objekteigenschaft zu verwenden?
 
Werbung:
Zurück
Oben