Hallo Jan,
ja, dachte ich mir auch so wie Du sagst - aber probier mal mein konkretes Beispiel:
$u = 'index.php?article_id=24&clang=0&action=bstlg&usermode=4';
echo $u; // Ausgabe: index.php?article_id=24&clang=0&action=bstlg&usermode=4'
$ul = (int) $u;
echo $ul; // Ausgabe: 0
if ( $u == $ul ) echo p('true');
else echo p('false');
// Ausgabe: true !!!
if ( $u === $ul ) echo p('true');
else echo p('false');
// Ausgabe: false !!!
Ich bin relativ neu in PHP und eigentlich gewohnt, dass der Vergleich von Variablen verschiedener Typen mit einem Compiler- oder spätestens einem Laufzeitfehler quittiert wird.
Anscheinend wird beim Vergleich mit "==" der String automatisch zu einem Int gecastet und dann lautet der Vergleich eben "0 == 0".
So funkts bei mir jedenfalls
class rex_xform_action_redirect extends rex_xform_action_abstract
...
$u = $this->getElement(2);
$u1 = (int) $u;
if($u === $u1 )
{
...