2016-09-14 1 views
1

Ich habe ein Feld in mySQL db: das Preisfeld wird als Float (25,2) festgelegt.PHP Math mit Variable funktioniert nicht

Warum wird dies nicht zu einem Ergebnis führen?

$refundable = $trial->data()->price - 100.00;

Wenn ich echo nur Trial- $> data() -> Preis, den ich den Rekordwert von 1100,00 bekommen, aber es wird in dieser einfachen mathematischen Gleichung nicht.

Nichts zeigt als Ergebnis sich für $ zurückerstattet

Hier meine Methoden sind:

public function find($invoice_id = null) { 
     if($invoice_id) { 
      $data = $this->_db->query("SELECT * FROM invoice WHERE invoice_id =" . $invoice_id . ""); 

      if($data->row_count()) { 
       $this->_data = $data->first(); 
       return true; 
      } 
     } 
     return false; 
    } 

    public function data() { 
     return $this->_data; 
    } 
+1

Wie geben Sie das Ergebnis aus? –

+1

Was ist die Ausgabe von $ 'var_dump ($ trial-> data() -> Preis);' der Typ? –

+1

Können Sie auch zeigen, wie die Methode 'data()' funktioniert? –

Antwort

0

Php kann den Wert von Ihrem db als String werden zu interpretieren. Casting es als ein Schwimmer sollte funktionieren, z.B.

$refundable = (float)$trial->date()->price - 100.00 
+0

Wenn 'price' eine numerische Zeichenkette ist, wird durch das Subtrahieren eines float-Wertes ein [numerischer Kontext] erstellt (http://php.net/manual/en/language.types.string.php#language.types.string.conversion) wo es bereits als Zahl ausgewertet wird. Die explizite Besetzung sollte nicht notwendig sein. –

+0

Der var-Dump ist eine Zeichenfolge (7). –

+0

Ich aktualisierte auch meine Frage mit den Methoden, wie gefordert –

0

Ich habe das herausgefunden, danke. Die mathematische Operation funktioniert gut. Das Problem, das ich entdeckt habe, ist, dass ich es wieder in eine Zeichenfolge konvertieren musste, damit es mit einem bestimmten Plugin richtig funktioniert.

Ich schätze die Hilfe hier.

Ohne die Kommentare wäre ich für eine Weile verloren gewesen!