• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

PHP - Type Casting

Airwolf89

New member
Hi Leut's,

geht um folgendes, ich will überprüfen ob bestimmte Daten, die von einem Formular kommen, numerisch sind.

Das sind ein paar Werte die ich in jeweils ein Feld reinschreibe, die werden erstmal alle im Array $_POST['ydata'] gespeichert, dessen Inhalt speichere ich widerrum in das Array $DataYAxis. Möchte gerne im Log überprüfen ob die eingegeben Werte numerisch sind, also nur numerische Werte eingegeben wurden und keine Buchstaben oder Sonderzeichen.

Wenn Daten aus nem Formular kommen sind sie ja grundsätzlich erstmal vom Typ string, demnach kann ich ja nicht überprüfen ob dei numerisch sind.
Dachte ich mir ich wandle jedes einzelne Element vom Array in Integer um, wenn das fehlschlägt dann kann ich das gut auslesen dass einer der Werte nicht numerisch war.

Sieht bis jetzt so aus:

Variablendeklaration
PHP:
$Multiplikator = $_POST['Zaehl'];
$DataYaxis = $_POST['ydata'];


for ($i = 0; $i< $Multiplikator; $i++) {
	settype($DataYaxis[$i], "integer");
}

Schreiben der Daten ins Log
PHP:
for ($i = 0; $i < $Multiplikator; $i++) {
	$logContentData = $logContentData . ($i+1) .". Datensatz der Y-Achse: " . gettype($DataYaxis[$i]) . " (" . $DataYaxis[$i] . ")" . "\r" . "\n";
}

Leider wird mir immernoch String als Typ angezeigt. Was mache ich falsch?

Danke nim voraus.
 
Zuletzt bearbeitet:
Hmm ok, jetzt funktionierts plötzlich. War wahrscheinlich doch nur nen Tippfehler oder so. Hatte gerade ne andere Variante ausprobiert, ging gar nicht, jetzt hab ichs wieder so und nu funkt das...
 
Hmm, ne Frage hätte ich aber doch noch.

Habe jetzt die Fehlerausgabe gemacht und habe ausprobiert ob alles klappt. Wenn ich jetzt nicht numerische sachen in eins der felder eingebe dann macht mir das Type-Casting ne 0 draus, dementsprechend isses immernoch Integer und meine Fehlerausgabe haut nicht hin. Was kann ich dagegen tun?
 
Ok, bin jetzt bei der suche nach den Regexes auf ctype_digit gestoßen. Eignet sich für meine Zwecke perfekt, überprüft ob ein übergebener String nur aus Zahlen besteht. Macht in dem Sinne auch nix anderes als die RegExes, so wie ich das mitbekommen habe, nur in einfacher Form. (Ja, ich weiß dass mit den RegExes noch mehr möglich ist als das, habs nur noch nit verstanden)

Danke nochmal
 
tip 1: casten geht schneller mit dieser schreibweise: $var = (int) $otherVar
tip 2: ctype_digit prüft tatsächlich nur auf ziffern, also liefert es bei 33,10 false, wenn du das auch brauchst schau dir mal PHP: is_numeric - Manual an
 
Zurück
Oben