Problem bei Funktion $iflonger

Gibt es ein Problem bei der Funktion $iflonger ?

Die Regel:
$iflonger(a,b,x,y) wenn a länger b Zeichen ist, wird x zurück geliefert, andernfalls y.

$iflonger('abc',,'yes','no') ==> 'yes' $iflonger('abc','a','yes','no') ==> 'yes' $iflonger('abc','ab','yes','no') ==> 'yes' $iflonger('abc','abc','yes','no') ==> 'yes' (should be 'no') $iflonger('abc','abcd','yes','no') ==> 'yes' (should be 'no')

Das funktioniert ...

$ifgreater($len('abc'),$len(),'yes','no') ==> 'yes' $ifgreater($len('abc'),$len('a'),'yes','no') ==> 'yes' $ifgreater($len('abc'),$len('ab'),'yes','no') ==> 'yes' $ifgreater($len('abc'),$len('abc'),'yes','no') ==> 'no' $ifgreater($len('abc'),$len('abcd'),'yes','no') ==> 'no'

... und so funktioniert es auch ...

$iflonger('abc',0,'yes','no') ==> 'yes' $iflonger('abc',1,'yes','no') ==> 'yes' $iflonger('abc',2,'yes','no') ==> 'yes' $iflonger('abc',3,'yes','no') ==> 'no' $iflonger('abc',4,'yes','no') ==> 'no'

Das Problem hat sich erledigt!

DD.20140909.1427.CEST

Ich verstehe die Erklärung/Lösung noch nicht. :thinking:

Blockquote $iflonger('abc','abcd','yes','no') ==> 'yes' (should be 'no')
Wieso YES?

Blockquote $ifgreater($len('abc'),$len('abcd'),'yes','no') ==> 'no'
Geht es tatsächlich nur so?

Wie finde ich den längeren String mit $iflonger ?

Die englische Hilfe sagt:
$iflonger(a,b,x,y) if string a is longer than number b, x is returned, otherwise y.
Die deutsche:
$iflonger(a,b,x,y) Wenn a länger b Zeichen ist, wird x zurück geliefert, andernfalls y.

leider wird im deutschen nicht klar, dass b eine Zahl sein muss.

Wenn du 2 Längen vergleichen willst (und nicht überprüfen, ob ein String länger als eine vorgegebene Zahl), dann musst du die Länge erst in eine Zahl umwandeln mit $len().
$iflonger('abc','abcd','yes','no') ==> 'yes' (should be 'no') liefert "yes", weil der String abcd als Zahl 0 liefert.
Zum Vergleich mit $iflonger() müsste es sein:
$iflonger('Abcd',$len('abc'),yes,no)

Excellent explanation, thank you.
Snoopy Xmas-10

Happy Xmas!