round gibt zalh aus mit Komma soll aber Punkt ausgeben

Joshman

Mitglied
Hi.

Ich bastell an einem Webshop, und binde UPS Tools ein.
Das ist auch gelungen.

Jetzt muss ich eine Variable runden, das mache ich mit

PHP:
$var = round($var,2);

daergebnis ist x,xx (mit einem Komma als Dezimaltrenner.

Jetzt zum Problem:

Ich habe dann den wert mit

PHP:
$var = str_replace(",",".",$var);

geändert.

Aber das Webshop Script (PHP, OsCommerce Conribution UPSXML)
verarbeitet dieses Variable irgendwie selbst, und ich bekomme die Fehlermeldung:

---- Fatal error: Cannot use string offset as an array in ...... -------

Was ich nicht hinbekomme ist das Komma zu ersetzen, um es UPS tauglich zu machen, der nimmt nur das Zahleformat "x.xx" an.

Ich weiss das es schwer ist ohne das Script komplett zu zeigen, mir zu helfen.

Aber ich will auch diese Fehler meldung Verstehen.

Mein Vermutungen:

1. Das liegt an der Codepage (Länderkodierung) des Browser oder des Servers.
Die Codepage einstellungen will ich wenns geht nicht ändern, weil sonst ja der Webshop komplett ein andere einstellung bekommt.

2. Die Variable auf die zugreifen will ist eine Referenz Variable oder so etwas,und ich versuche immer einen Referenzwert zu ändern, und nicht den Tatsächlichen Wert der Variable.

3. Das hier verstehe ich nocht nicht als Code:
Wenn dann Inline ?

PHP:
 $this->item_weight[$index] = ($weight ? (string)$weight : '0' );

Könnte mir da bitte jemand das hier erklären? (Bekommst auch Richtig vile Lob und so... ;))

4. So was eigentlich Passieren soll ist:

PHP:
<Weight>" . $this->item_weight[$i] . "</Weight>\n".

Soll "x.xx" bekommen, aber bekommt dieses Format "x,xx" , und UPS nimmt das nicht an.

Ich habe hier mit str_replace, number_format und strstr undundund probiert...
Folge war immer die Fehlermeldung von oben, wenn ichrgendwas an "$this->item_weight[$i]" geändert habe.....

Bin jetzt mit 12 Std. und recherche wohl auf dem Holzweg und sehe die Wälder vor Lauter globalisierung nicht mehr....

Also ich weis genau was ich gändert haben will, aber nix geht...

Trändrüsedrückextrem: HILFE ! Ich breack; together und sowas.... Verdammte Winterdepression..... ;)

THX Joshi aus HH
 
Zuletzt bearbeitet:
PHP:
$this->item_weight[$index] = ($weight ? (string)$weight : '0' );

Das ist der sogenannte ternäre Operator mit dem sie bei OS:Commerce leider sehr viel arbeiten... Teilweise übertrieben viel. Es ist eine Kurzform zum [phpf]if[/phpf] Konstrukt.

Man könnte es auch so schreiben:

PHP:
if($weight)
{
  $this->item_weight[$index] = (string)$weight;
}
else
{
  $this->item_weight[$index] = 0;
}

Zu den anderen Fehlern kann ich ohne den gesamten Code nichts sagen.
 
Hallo,

vielleicht so:
PHP:
$var = str_replace(",",".",strval($var));

Könnte funktionieren, muss aber nicht. Wie lautet denn die Fehlermeldung komplett? Bzw. wie sieht denn die Zeile aus, auf die der Fehler verweist?

MfG Erik
 
Zurück