fastix®: Ist die Variable eine Ziffer?

Beitrag lesen

Moin!

Hallo fastix®.

echo '$foo ist numerisch: '.(is_numeric($foo) ? 'Ja' : 'Nein');[/code]

Das ist aber "automatische Typenumwandlung".
Siehe meine Korrektur: Das ist aber [_keine_] "automatische Typenumwandlung". in https://forum.selfhtml.org/?t=114570&m=730828.

Die hatte ich gelesen und bei meiner Antwort berücksichtigt.

Nunja. Wie würdest du den Vorgang dann bezeichnen, der automatisch in einer Zeichenkette eine Zahl erkennt und als numerisch kennzeichnet?

"Typprüfung". "Umgewandelt" wird ja nicht: $foo bleibt, wie und was es ist.

Aber $foo ist nicht numerisch. Die Variable $foo ist ein normaler String, würde nicht (intern) umgewandelt, dürfte is_numeric nicht true zurückliefern. Oder verstehe ich dies falsch?

Ja, ich bin ein schrecklicher Genauheimer....

Dann beantworte mir doch bitte die Frage, die du weggelassen hast:

(numeric != int ?)

Da die ganzen Zahlen (int) eine Teilmenge aller Zahlen (numeric) sind, sollte die korrekte Antwort lauten: bei der Einschränkung auf genau ein untersuchtes Zeichen sind die Menge der betrachteten Strings mit möglichen ganzen Zahlen und die welche numerische Werte enthalten - unter Beachtung vorstehender Bedingung der Einstelligkeit - übereinstimmend. Es sind genau zehn Strings: '0','1','2','3','4','5','6','7','8','9'.

Da die Eulersche Zahl (e) bereits als Symbol für Exponent gebraucht wird ist nicht zu befürchten, dass diese früher oder später als "numerisches Symbol", in is_mumeric() verwendet, ein true liefert.

Folgendes Skript führt zu folgenden Ergebnis:

<?
error_reporting (8);
echo '1 ist numerisch: '.(is_numeric(1) ? 'Ja' : 'Nein');
echo "<br>";
echo '"1" ist numerisch: '.(is_numeric('1') ? 'Ja' : 'Nein');
echo "<br>";
echo '"1a" ist numerisch: '.(is_numeric('1a') ? 'Ja' : 'Nein');
echo "<br>";
echo '"1e" ist numerisch: '.(is_numeric('1e') ? 'Ja' : 'Nein');
echo "<br>";
echo '"1e2" ist numerisch: '.(is_numeric('1e2') ? 'Ja' : 'Nein');
echo "<br>";
echo 'e ist numerisch: '.(is_numeric(e) ? 'Ja' : 'Nein');
echo "<br>";
echo '"e" ist numerisch: '.(is_numeric("e") ? 'Ja' : 'Nein');
?>

->

1 ist numerisch: Ja
"1" ist numerisch: Ja
"1a" ist numerisch: Nein
"1e" ist numerisch: Nein
"1e2" ist numerisch: Ja

Notice: Use of undefined constant e - assumed 'e' in /home/srv/www/htdocs/test/numerisch.php on line 13
e ist numerisch: Nein
"e" ist numerisch: Nein

-> Es wird also nur geprüft, ob der mixed-value als Integer zu interpretieren ist. Selbst ungesetzte Konstanten (e) werden nicht als numerisch zurückgegeben.

MFFG (Mit freundlich- friedfertigem Grinsen)

fastix®

--
Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Seminare, Training, Development