ist ganzzahlig?
kölir
- php
0 André Laugks2 Rekire0 kölir0 André Laugks0 rekire
0 Andy
Hi,
wie kann ich prfen ob ein Integer ganzzahlig ist? ohen punkt komma usw? Einfach eine Zahle oder mehrere Zahlen in Folge aber nix anderes?
is_numeric lässt ja auch kommatzahlen zu?
Hallo!
function is_pos_id($id = 0)
{
if(preg_match('/[1][0-9]*$/', $id)) {
return true;
}
return false;
}
Setze noch ein @ vor preg_match(), um Fehlermeldungen zu unterdrücken, falls ein Array etc. übergeben wird.
Man kann es aber auch so machen:
function is_pos_id($id = 0)
{
if(!isset($id) || empty($id)) {
return false;
}
if(is_array($id)) {
return false;
}
if(preg_match('/[2][0-9]*$/', $id)) {
return true;
}
return false;
}
André Laugks
ich würde es einfach mit der funktion is_int() versuchen. damit wird geprüft, ob die zahl integer (also ganzzahlig ist).
beispiel
is_int(4/2) = true
is_int(3/2) = false
echo $begrüßung;
ich würde es einfach mit der funktion is_int() versuchen. damit wird geprüft, ob die zahl integer (also ganzzahlig ist).
Nein, diese Funktion prüft, ob eine Variable oder ein Ausdrucks vom Typ Integer ist, nicht ob ihr Inhalt einem Integerwert entspricht.
beispiel
is_int(4/2) = true
is_int(3/2) = false
is_int(0.5 + 0.5) = false, da das Ergebnis von 0.5 + 0.5 zwar ein Integerwert ist, aber als float(1) vorliegt.
is_int('1') = false, da es sich hierbei um den Typ String handelt.
Durch PHPs automatische Typumwandlung wird ein Vergleich auf Integer nicht gerade sehr einfach (wenn man nicht ctype_digit() verwendet):
var_dump('1abc' == intval('1abc')); => true
var_dump('1abc' == (int)'1abc'); => true
oder auch
var_dump('1x' == intval('1u')); => true
var_dump('1x' == (int)'1u'); => true
Auch der typstrikte Vergleich === ist hier nicht sehr brauchbar, wenn man in Strings enthaltene Zahlen prüfen will (z.B. Werte aus Eingabefeldern, die immer als String geliefert werden).
var_dump('1' === intval('1')); => false
Als Lösung plädiere ich auf einen erzwungenen Integerwert mittels intval() (liefert 0 oder die aus dem Argument gewonnene Zahl) oder eine Musterprüfung mittels ctype-Funktion oder RegExp.
echo "$verabschiedung $name";
Moin!
Ich nehme da eine eigene Funktion, um ganz sicher zu gehen.
Eigene Funktionen sind nett, wenn es nichts vorgefertigtes gibt, aber für genau diesen Fall gibt es was vorgefertigtes!
> function is_pos_id($id = 0)
> {
> if(preg_match('/^[1-9][0-9]*$/', $id)) {
// Darf ein Integer keine 0 sein?
> return true;
> }
> return false;
> }
Und jetzt die bessere, vorgefertigte Funktion:
http://www.php.net/ctype_digit
Alle Funktionen der ctype-Serie bieten relativ nützliche Testfunktionen. Und sie sind eigentlich in jeder PHP-Version ab 4.2.0 verfügbar (ab dann sind sie standardmäßig aktiviert).
- Sven Rautenberg
Hallo!
// Darf ein Integer keine 0 sein?
Das stimmt natürlich!
Und jetzt die bessere, vorgefertigte Funktion:
http://www.php.net/ctype_digitAlle Funktionen der ctype-Serie bieten relativ nützliche Testfunktionen. [...]
Danke schön! Auf die bin ich noch gar nicht gestoßen :-(!
André Laugks
Wie wäre es mit $zahl==(int)$zahl?
Gruß,
Rekire
was soll das sein?
Hallo!
was soll das sein?
$zahl wir zu einem Integer.
{link:http://de2.php.net/manual/de/language.types.integer.php] (Siehe in der Mitte der Seite.)
André Laugks
Hi,
$zahl wir zu einem Integer.
$zahl kann am Anfang z.B. 1,5 enthalten mit (int) ein Typecast wird daraus ein e 1.
Als Beispiel: 1,5==1 -> false
Gruß,
Rekire
Hallo!
wie kann ich prfen ob ein Integer ganzzahlig ist? ohen punkt komma usw? Einfach eine Zahle oder mehrere Zahlen in Folge aber nix anderes?
Da gibt es nichts zu überprüfen! Integer ist laut Definition immer ganzzahlig!
SCNR! :)
Andy