ERLEDIGT
NEIN
NEIN
ANTWORTEN
29
29
ZUGRIFFE
765
765
EMPFEHLEN
-
Hallo,
ich habe auf einmal ein ganz eigenartiges Problem:
In einer Funktion vergleiche ich zwei Werte wie folgt:
Eigentlich nichts Weltbewegendes - dachte ich. Denn obwohl die Variableninhalte gleich sind, wird -1 zurückgegeben. An was kann das liegen?PHP-Code:echo "Summe Soll: $summeSoll\n";
echo "Summe Haben: $summeHaben\n";
if ($summeSoll != $summeHaben)
{
return -1; // Beträge Soll/Haben stimmen nicht überein
}
Vielen Dank!
Michael
-
Sicher, dass sie genau gleich sind? Zeig doch mal die Deklaration der Variablen.
Gruß fanste
Benutze bitte immer die passende Highlight-Tags.(z.B: für PHP [php] [/php] Allgemein: [highlight=SCRIPTSPRACHE]Code[/highlight] )
Problem gelöst? Dann markiere das Thema bitte als erledigt!
Beachte bitte die Netiquette. Insbesondere Punkt 15.
-
Was sagt denn die Identitätsprüfung:
PHP-Code:var_dump( $summeSoll === $summeHaben );
Markus Wulftange
-
16.06.06 00:09 #4Er prüft doch mit != und nicht !==, also ist der Variablentyp doch schnuppe, oder seh ich das falsch?
Zitat von Gumbo
Gruß mAu
──────────────────────────
Ich auf flickr
* Unformatierten Quellcode schaue ich mir _nicht_ an!
* Sollte ich euch bei einer Frage weitergeholfen haben, würde ich mich über eine positive Bewertung freuen.
* Bitte die Netiquette beachten.
* Vergesst nicht, beantwortete Fragen als erledigt zu markieren!
-
var_dump gibt als Ergebnis "bool(false)" zurück.
Die Variablen wurden folgendemaßen deklariert bzw. befüllt:
Ich habe auch schon den Typ überprüft, obwohl dies bei != eigentlich keine Rolle spielen dürfte: beidesmal double.PHP-Code:$summeSoll = 0;
foreach ($soll as $konto => & $betrag)
{
$betrag = str_replace(',', '.', $betrag);
$betrag = number_format($betrag, 2, '.', '');
$summeSoll += $betrag;
}
$summeHaben = 0;
foreach ($haben as $konto => & $betrag)
{
$betrag = str_replace(',', '.', $betrag);
$betrag = number_format($betrag, 2, '.', '');
$summeHaben += $betrag;
}
-
Wie sehen denn typische Ausgangswerte dafür aus?
Markus Wulftange
-
$soll:
Array
(
[Forderungen] => 59.99
)
$haben:
Array
(
[USt] => 8.27
[WVK_Kost] => 0.00
[WVK] => 51.72
)
$summeSoll und $summeHaben sind also beide 59.99, was durch die echos vor der if-Abfrage bestätigt wird.
-
also die crc32-Summe stimmt überein...merkwürdig.
Wozu ist eigentlich das & da?
Code :1
[B]&[/B] $betrag
-
Mit dem & bekomme ich eine Referenz auf die jeweilige Variable. Somit werden die Veränderungen, die in der Schleife an der Variable $betrag vorgenommen werden, direkt auf der Variablen durchgeführt.Wozu ist eigentlich das & da?
-
Bist du sicher..ich bekomme mit dem & einen Parse-Error

Aber das mit dem Vergleich ist schon sehr merkwürdig
-
Also bei mir gehts. Funktioniert auch alles wunderbar: die Summen werden werden korrekt berechnet. Nur der Vergleich funktioniert nicht. Ich habe auch schon die Summen-Variablen im if-Bereich ausgeben lassen (direkt vor dem return), sie sind absolut identisch.
-
Jo...bei mir gehts ja auch(ohne die &
)...wie gesagt, selbst die Prüfsumme stimmt.
So funktioniert sogar der Vergleich:
....ich bin sehr verwirrt.Code :1
echo(md5($summeSoll)==md5($summeHaben))?1:-1;
-
Ich habs jetzt folgendermaßen angepasst:
So gehts jetzt wenigstens fürs Erste...PHP-Code:// if ($summeSoll != $summeHaben)
if (md5($summeSoll) != md5($summeHaben))
{
// echo "*$summeSoll*$summeHaben*";
return -1; // Beträge Soll/Haben stimmen nicht überein
}
Wurde bei dir der Vergleich (ohne md5) korrekt durchgeführt? Oder auch nur mit md6?
Vielen Dank für die Hilfe!
-
Nö...bei mir wars das gleiche wie bei dir, total unverständlich für mich, wenn der Hash identisch ist, dann sollte es der Wert erst recht sein.
Entweder das ist ein Bug, oder ein ganz banaler Denkfehler
-
16.06.06 03:21 #15
Das kann nur ein Bug sein... Denn Typen UND Wert sind (bei mir) laut var_dump() gleich. Und die Abfrage liefert auch bei mir ein false... Also kann es nur ein Bug sein.
Nachtrag
Folgendes gibt jedoch bei mir bool(true):
Also liegt es daran, ob die Arrays gleich sind oder nicht.PHP-Code:$soll = array('Forderungen'=> 59.98, 'Bloub' => 0.01);
$haben = array('USt' => 59.98, 'Bloub' => 0.01);
# Und das auch
$soll = array('Forderungen'=> 59.99);
$haben = array('USt' => 59.99);
# Folgendes jedoch NICHT
$soll = array('Forderungen'=> 59.97, 'a' => 0.02);
$haben = array('USt' => 59.98, 'a' => 0.01);
Geändert von mAu (16.06.06 um 03:26 Uhr)
Gruß mAu
──────────────────────────
Ich auf flickr
* Unformatierten Quellcode schaue ich mir _nicht_ an!
* Sollte ich euch bei einer Frage weitergeholfen haben, würde ich mich über eine positive Bewertung freuen.
* Bitte die Netiquette beachten.
* Vergesst nicht, beantwortete Fragen als erledigt zu markieren!
Ähnliche Themen
-
<ul> ist nicht gleich <ul>
Von crunch im Forum Javascript & AjaxAntworten: 3Letzter Beitrag: 28.12.10, 17:05 -
Java2D oder doch gleich Java3D
Von PeterStaab im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 0Letzter Beitrag: 15.12.07, 14:22 -
KUbuntu oder doch besser gleich Debian ?
Von Liro im Forum Linux & UnixAntworten: 11Letzter Beitrag: 03.07.07, 21:11 -
grösser gleich bzw. kleiner gleich
Von saila im Forum PHPAntworten: 5Letzter Beitrag: 11.09.06, 13:47 -
größer gleich oder kleiner gleich
Von saila im Forum Relationale DatenbanksystemeAntworten: 0Letzter Beitrag: 10.09.06, 23:35





Zitieren
Login






[PHP] [Codeschnipsel] ImageColor aus HTML-Farbcodierung erstellen