| PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here! |
 |

26-09-2005, 17:39
|
|
Maranello-550
Member
|
|
Registriert seit: Aug 2002
Ort: :tronhoW
Beiträge: 498
|
|
Numerischer String: Interger oder Double?
Hallo Leute!
Ich habe eine Datenbank, in der ich sowohl strings als auch integer und doubles in einer Text-Spalte abspeichern muss. Beim Auslesen habe ich nur das PRoblem, dass ich zwar mit is_numeric() zwischen strings und numerischen strings unterscheiden kann, bei diesen aber nicht zwischen integer und double. Ich müsste aber die Typen wieder entsprechend umwandeln.
PHP-Code:
$str = '0.123';
echo (int) $str; // --> 0 und nicht 0.123
Wie kann ich die Typen korrekt umwandeln?
__________________
arrays sind klasse
|

26-09-2005, 17:42
|
|
penizillin
PHP Guru
|
|
Registriert seit: Feb 2004
Beiträge: 10.166
|
|
wicked..
is_int() => intval()
is_float() => floatval()
etc.?
|

26-09-2005, 17:48
|
|
Maranello-550
Member
|
|
Registriert seit: Aug 2002
Ort: :tronhoW
Beiträge: 498
|
|
*vordenkopfschlag*
EDIT:
Nein, so simpel ist es doch nicht!
Die Variable liegt als Typ string vor, weswegen man nicht mit is_int() oder is_float() arbeiten kann.
Nebenfrage:
$str = (int) $str;
$str = intval($str);
Welche Umwandlungsmethodik ist vorzuziehen?
__________________
arrays sind klasse
Geändert von Maranello-550 (26-09-2005 um 17:52 Uhr)
|

26-09-2005, 17:58
|
|
penizillin
PHP Guru
|
|
Registriert seit: Feb 2004
Beiträge: 10.166
|
|
man kann ja schummeln
PHP-Code:
is_float($foo+0)
ich nutze immer intval(), aber ich glaube, es macht keinen unterschied.
|

26-09-2005, 18:14
|
|
Maranello-550
Member
|
|
Registriert seit: Aug 2002
Ort: :tronhoW
Beiträge: 498
|
|
Danke
__________________
arrays sind klasse
|

26-09-2005, 18:17
|
|
penizillin
PHP Guru
|
|
Registriert seit: Feb 2004
Beiträge: 10.166
|
|
das ist natürlich ein workaround, sowas mag ich selbst nicht, aber wenn jemandem was besseres einfällt...
evtl. vorher auf is_numeric() prüfen, damit das "+0" sinn ergibt.
|

26-09-2005, 23:35
|
|
inder
Newbie
|
|
Registriert seit: Sep 2005
Beiträge: 10
|
|
Also ich habe für solche Dinge eigene Funktionen
z.B.:
PHP-Code:
function is_uint($input) {
$input = '' . $input;
if(strlen($input) == 0)
return false;
for($i = 0; $i < strlen($input); $i++) {
if((ord($input[$i]) < 48) || (ord($input[$i]) > 57))
return false;
}
return true;
}
|

26-09-2005, 23:55
|
|
penizillin
PHP Guru
|
|
Registriert seit: Feb 2004
Beiträge: 10.166
|
|
wieder das rad neu erfinden?
was du mit is_uint() testest, kann ich absolut genau so mit
PHP-Code:
( is_int($x) && $x >= 0 )
testen.
aber lies dir die frage noch mal durch - es ging um etwas anderes.
|

27-09-2005, 07:20
|
jahlives
Master  
|
|
Registriert seit: Jun 2004
Ort: Hooker in Kernel
Beiträge: 8.283
|
|
PHP-Code:
function is_strInt($data){
$data = strtolower($data);
if(is_numeric($data) && !strpos($data,".") && !strpos($data, "e") && !strpos($data,"x"))
{
//ist ein Integer
return 'int';
}
elseif(is_numeric($data) && strpos($data,".") && !strpos($data,'e') && !strpos($data,'x'))
{
//is ein float
return 'float';
}
else
{
return false;
}
}
Vllt könnte das helfen....
Gruss
tobi
|

27-09-2005, 07:46
|
|
inder
Newbie
|
|
Registriert seit: Sep 2005
Beiträge: 10
|
|
Zitat:
Original geschrieben von penizillin
wieder das rad neu erfinden?
was du mit is_uint() testest, kann ich absolut genau so mit
PHP-Code:
( is_int($x) && $x >= 0 )
testen.
aber lies dir die frage noch mal durch - es ging um etwas anderes.
|
Das Rad vielleicht neu erfunden, vielleicht auch nicht. Ich brauch nicht zwei Teilausdrücke um zu prüfen ob es UNSIGNED int ist.
Und auch wenn es um etwas anderes gegangen ist. Die Funktion umbenannt, nach dem Minuszeichen gefragt und dem Punkt und schon ist es diesem Thread zugeschnitten. Ich wollte ja nur ein Beispiel zeigen.
Aber in diesem Forum wird man sogar angefickt wenn man jemandem einen Rat geben möchte. Falls ich im Profil meinem Account nicht löschen kann, so tut das bitte für mich. Ist ja echt nicht auszuhalten, wie sich hier einige "höhere Tiere" verhalten.
|

27-09-2005, 09:57
|
|
penizillin
PHP Guru
|
|
Registriert seit: Feb 2004
Beiträge: 10.166
|
|
bleib mal auf dem boden und achte auf deine ausdrucksweise, bitte.
ich habe lediglich bemerkt, dass deine antwort nicht zu der frage passt. und deinen code habe ich gern kritisiert, weil es redundanter unfug ist. du erfindest ja auch nicht myEcho($str) und myPlus($a, $b) neu, oder?
dasss du nur einen ausdruck zum prüfen brauchst ist ein sehr schwaches argument, wenn man bedenkt, dass dein code eine ganze runde mehr prozessorzeit und speicher braucht.
|

27-09-2005, 15:59
|
|
inder
Newbie
|
|
Registriert seit: Sep 2005
Beiträge: 10
|
|
PHP-Code:
$value = '10';
if(is_int($value) && $value >= 0)
echo('Unsigned int!');
else
echo('Kein unsigned int!');
Die Ausgabe dürfte für dich klar sein. Und für meine Fälle ist soetwas nicht zu gebrauchen. Zum Beispiel wenn ich durch Benutzereingabe (get oder post) etwas nach einer ID löschen möchte oder so...
|

27-09-2005, 16:10
|
|
penizillin
PHP Guru
|
|
Registriert seit: Feb 2004
Beiträge: 10.166
|
|
deswegen haben wir mit Maranello-550 auch von der typenkonvertierung geredet. deine funktion is_uint() macht es auch nicht, sie prüft nur, ob ein string aus zahlen besteht.
|

27-09-2005, 16:17
|
|
mrhappiness
PHP Guru
|
|
Registriert seit: Oct 2002
Beiträge: 14.890
|
|
Vorschlag zur Güte:
PHP-Code:
function is_uint($input) {
return (string)$input == (string)max(0, (int)$input);
}
__________________
Ich denke, also bin ich. - Einige sind trotzdem...
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|