Problme mit Typ Konvertierung

Problme mit Typ Konvertierung

am 03.08.2006 13:57:15 von Peter Sengelmann

Hi,

ich möchte ein Integer und ein String Wert miteinander vergleichen, ob
die String Repräsentation der Werte gleich oder ungleich ist, hierzu
konvertiere ich beide Wert nach String, nur funktioniert dieses leider
nicht, wer kann helfen??

Gebe ich die Werte aus oder ermittele die String Länge, sind diese auch
unterschiedlich, nur der Vergleich funktioniert trotz String
Konvertierung nicht.

$verg1 = 6; // Zahl 6
$verg2 = (string)'6.'; // String 6. (& mit einen Punkt dahinter)

if ((string)$verg1 <> (string)$verg2) {
echo 'Verg1: '.$verg1.'; Verg2: '.$verg2.' Ungleich';
} else {
echo 'Verg1: '.$verg1.'; Verg2: '.$verg2.' Gleich';
}

Ausgabe:
Verg1: 6; Verg2: 6. Gleich

Habe keine Idee mehr.

Gruß
Peter

Re: Problme mit Typ Konvertierung

am 03.08.2006 14:05:02 von Stefan Dreyer

Peter Sengelmann wrote:
> Hi,
>
> ich möchte ein Integer und ein String Wert miteinander vergleichen, ob
> die String Repräsentation der Werte gleich oder ungleich ist, hierzu
> konvertiere ich beide Wert nach String, nur funktioniert dieses leider
> nicht, wer kann helfen??
>
> Gebe ich die Werte aus oder ermittele die String Länge, sind diese auch
> unterschiedlich, nur der Vergleich funktioniert trotz String
> Konvertierung nicht.
>
> $verg1 = 6; // Zahl 6
> $verg2 = (string)'6.'; // String 6. (& mit einen Punkt dahinter)
>
> if ((string)$verg1 <> (string)$verg2) {
> echo 'Verg1: '.$verg1.'; Verg2: '.$verg2.' Ungleich';
> } else {
> echo 'Verg1: '.$verg1.'; Verg2: '.$verg2.' Gleich';
> }
>
> Ausgabe:
> Verg1: 6; Verg2: 6. Gleich
>
> Habe keine Idee mehr.
Ohne es ausprobiert zu haben, solltest Du in diesem Fall besser strcmp
nehmen.

Re: Problme mit Typ Konvertierung

am 03.08.2006 14:13:08 von Carsten Wiedmann

Peter Sengelmann schrieb:

> $verg1 = 6; // Zahl 6
> $verg2 = (string)'6.'; // String 6. (& mit einen Punkt dahinter)
>
> if ((string)$verg1 <> (string)$verg2) {
> echo 'Verg1: '.$verg1.'; Verg2: '.$verg2.' Ungleich';
> } else {
> echo 'Verg1: '.$verg1.'; Verg2: '.$verg2.' Gleich';
> }
>
> Ausgabe:
> Verg1: 6; Verg2: 6. Gleich
>
> Habe keine Idee mehr.

Das Manual [1] weis dazu:
| If you compare two numerical strings, they are compared as integers.

Gruß
Carsten

[1] http://de.php.net/manual/en/language.operators.comparison.ph p

Re: Problme mit Typ Konvertierung

am 03.08.2006 15:01:21 von Peter Sengelmann

Stefan Dreyer schrieb:
> Peter Sengelmann wrote:
>> Hi,
>>
>> ich möchte ein Integer und ein String Wert miteinander vergleichen, ob
>> die String Repräsentation der Werte gleich oder ungleich ist, hierzu
>> konvertiere ich beide Wert nach String, nur funktioniert dieses leider
>> nicht, wer kann helfen??
>>
>> Gebe ich die Werte aus oder ermittele die String Länge, sind diese
>> auch unterschiedlich, nur der Vergleich funktioniert trotz String
>> Konvertierung nicht.
>>
>> $verg1 = 6; // Zahl 6
>> $verg2 = (string)'6.'; // String 6. (& mit einen Punkt dahinter)
>>
>> if ((string)$verg1 <> (string)$verg2) {
>> echo 'Verg1: '.$verg1.'; Verg2: '.$verg2.' Ungleich';
>> } else {
>> echo 'Verg1: '.$verg1.'; Verg2: '.$verg2.' Gleich';
>> }
>>
>> Ausgabe:
>> Verg1: 6; Verg2: 6. Gleich
>>
>> Habe keine Idee mehr.
> Ohne es ausprobiert zu haben, solltest Du in diesem Fall besser strcmp
> nehmen.
Danke, funktioniert!