Integer Verständnis Problem
chr..itz
- php
Hallo Forum,
Ich hab gerade folgendes Verständnis (ggf. auch Unwissenheits -) Problem:
Ich übergebe an meine css erzeugende php Datei mittels ?css= eine Zahl (z.B. ?css=5 )
diese ist dann der Schluessel für das abzuklappernde Array in dem die Styleangaben stehen.
Weil ich einen Geistesblitz hatte und absolut nicht explizite
"auf den Array Schlüssel prüfen" wollte,
dachte ich an eine Prüfung mit:
if( >= 0 und < Anzahl_Array_Keys)
und ganz besonders an ein mit
is_int($_GET['css']),
ich weiss ja dass im Normalfall simple Zahlen ohne Komma kommen
(meines erachtens also Integer Zahlen?!) die ich folglich mit is_int() prüfen kann/können sollte.
Nur warum kann ich es letztendlich nicht?
Denn is_int() bringt mir immer false.
Um Erklärungen warum wäre ich dankbar.
Gruß Chris
Hallo chr..itz.
is_int($_GET['css']),
Was sagt gettype() zum Inhalt von $_GET['css']?
Einen schönen Dienstag noch.
Gruß, Ashura
Hallo chr..itz.
Hallo Ashura,
Was sagt gettype()?
schdring ... hab ich jetzt noch nie gehört und ...
Einen schönen Dienstag noch.
Wünsche ich Dir auch, aber auf dass meiner bald vorbei ist ;)
Und danke für's Brett vor'm Kopf weghauen!
Gruß, Ashura
Gruß Chris
Hallo chr..itz.
Was sagt gettype()?
schdring ... hab ich jetzt noch nie gehört und ...
Du hast dir aber die Grundlagen in PHP angeeignet?
Einen schönen Dienstag noch.
Gruß, Ashura
Hallo chr..itz.
Moien Ashura,
> Du hast dir aber die Grundlagen in PHP angeeignet?
Ja, ich denke das habe ich ;)
Und jenes :
Und danke für's Brett vor'm Kopf weghauen!
sollte eigentlich ausdrücken dass das Brett in dem Moment als mir gettype() string ausgab gerade zu weg geflogen ist.
Einen schönen Dienstag noch.
Gruß, Ashura
Gruß Chris
echo $begrüßung;
is_int($_GET['css']),
Denn is_int() bringt mir immer false.
Die $_*-Arrays enthalten immer Strings. is_numeric() ist da besser geeignet.
echo "$verabschiedung $name";
echo $begrüßung;
Hallo dedlfix,
Die $_*-Arrays enthalten immer Strings.
.. es ist nicht so dass ich das noch nie gehört habe .... was die Sache natürlich eher verschlimmert ;-)
echo "$verabschiedung $name";
Gruß Chris
Hallo chr..itz,
.. es ist nicht so dass ich das noch nie gehört habe .... was die Sache natürlich eher verschlimmert ;-)
Das mit dem is_int() hat mich damals auch verwundert.
is_numeric() wollte ich aber nicht verwenden da es auch andere Typen als Integer erlaubt. Deshalb habe ich folgende Funktion definiert, sie könnte dir nützlich sein:
function isValidNumber($str)
{
return preg_match('/^[0-9]+$/', $str);
}
Grüße
Marc Reichelt || http://www.marcreichelt.de/
echo $begrüßung;
is_numeric() wollte ich aber nicht verwenden da es auch andere Typen als Integer erlaubt.
Meinst du die E-Notation und Fließkommazahlen?
Es gibt auch noch diverse ctype-Funktionen.
echo "$verabschiedung $name";
Hallo nochmals,
Das mit dem is_int() hat mich damals auch verwundert.
is_numeric() wollte ich aber nicht verwenden da es auch andere Typen als Integer erlaubt. Deshalb habe ich folgende Funktion definiert, sie könnte dir nützlich sein:
function isValidNumber($str)
{
return preg_match('/[1]+$/', $str);
}
Nach weiterer Recherche bin ich auf die Funktion [intval()](http://de.php.net/manual/de/function.intval.php) gestoßen, die auf jeden Fall eine int-Zahl ausgibt. Das wird deinen Anspruch sicher erfüllen.
Die folgenden beiden Codeausschnitte haben beide den gleichen Effekt:
`$zahl = intval($variable);`{:.language-php}
und
`$zahl = (int) $variable;`{:.language-php}
Bei Problemen hat $zahl danach den Wert 0.
Grüße
Marc Reichelt || <http://www.marcreichelt.de/>
--
Linux is like a wigwam - no windows, no gates and an Apache inside!
Selfcode: ie:{ fl:| br:> va:} ls:< fo:} rl:( n4:( ss:) de:> js:| ch:? sh:| mo:) zu:)
<http://emmanuel.dammerer.at/selfcode.html>
0-9 ↩︎
Hello,
Nach weiterer Recherche bin ich auf die Funktion intval() gestoßen, die auf jeden Fall eine int-Zahl ausgibt. Das wird deinen Anspruch sicher erfüllen.
Das kommt darauf an, ob ein NULL-Value erforderlich ist für 'keine' oder 'fehlerhafte' Eingabe.
intval(irgendwas) gibt immer 0 aus, wenn keine erkennbare numerische Größe voransteht. Man kann also nicht erkennen, ob die Eingabe "richtig" war.
Die Preg_Match()-Methode ist da zwar teurer, aber bestimmt auch sicherer.
Harzliche Grüße vom Berg
esst mehr http://www.harte-harzer.de
Tom
Danke euch allen für die Lösungsansetze,
intval(irgendwas) gibt immer 0 aus, wenn keine erkennbare numerische Größe voransteht. Man kann also nicht erkennen, ob die Eingabe "richtig" war.
Das liest sich doch gut an, mit einer 0 im worst case kann ich leben und vorallem arbeiten.
Danke noch mal
Gruß Chris