如何判断数据类型?比如整型呀,实型呀.............. 传过来都是字符串类型intval($str)==$str 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 swotcoder(苦 丁):我上现的问题中有这句:“我用了诸如:is_int() ,is_real之类的函数,好像不太有效,”你看到了么? qiushuiwuhen(秋水无恨) :谢谢,你能详细说一下这个函数么?我的目的是判断表单传来的数据是不是(能不能转换成)int,float型,因为它们是要用来计算的,比如几本书呀,多少钱一本呀,。,。vivanboy(☆☆☆☆☆)(★★★★★) :谢谢,我好像不太懂你的意思。说明白点好么? 我的目的是判断表单传来的数据是不是(能不能转换成)int,float型,因为它们是要用来计算的,比如几本书呀,多少钱一本呀,。,。-----------------------------------------------------------正好用秋水大虾的方法。如果判断是否整数可以用我的方法if(intval($int)==$int) echo "是整数";用正这表达式也可以 is_numeric: Finds whether a variable is a number or a numeric string 谢谢,回得这么快,我一直在线的。秋水大虾的方法我还不会用。if(intval($int)==$int) echo "是整数";//其中的intval($int)是整数了,而$int仍是字符串,可以么? if(!(is_int((int)($BirthYear)) && is_int((int)($BirthMonth)) && is_int((int)($BirthDay)))){ echo '时间输入格式有错误!'; exit;}这时,这几个变量的值为"aaaa"都没事,if不成立。 is_int((int)($BirthYear)) 是什么意思?奇怪。你要判断一个东西是不是整数,又自己先把它强制转换成整数……就如同你要判断杯子里的东西是不是茶,你不管三七二十一,先把里面的东西换成茶……这不分明是自己骗自己吗?呵呵事实上,用 (int) 进行强制转换时,如果被转换的字符串不符合整数,就转换为 0:(int) "aaaa" = 0is_int( (int) "aaaa" ) 当然返回 true 啦(随便把 "aaaa" 换成什么都是 true)你没有理解 PHP 的“类型”的真正含义——PHP 不是 C 语言那种强类型语言,它的变量类型不过是个人为加的标签,就如同一堆肉,插上“狗肉”的牌子,它便是狗肉,插上“羊肉”的牌子,它便是羊肉(当然,要符合最起码的规则,例如 "aaaa" 无论如何也插不上“整数”的标签,硬插上了,它就只好变成 0)。你这里要判断的其实不是变量的“类型”,而是其内容!以上几位都说了,为了让你更清楚,给你个最笨的例子:// 判断一个字符串的内容是否符合整数的规定(即是否所有字符都是数字)function IsIntStr($str){ for ( $i = 0; $i < strlen($str); $i ++ ) { $ch = $str[$i]; if ( $ch < '0' || $ch > '9' ) return false; } return true;}如果你想知道用户提交的某个变量 $age (年龄)是否真的是整数:if ( IsInt($age) ) echo "is integer";else echo "not integer";实际编程,人们可能使用正则表达式之类,比上面的简练多了,但基本原理都是一样的:判断给定字符串的内容是否符合某个规则——整数只能是"+-0123456789" 组成,实数可以再加上 ".eE" 这些东西,如果是特殊的整数,例如月份,你还要自己判断它是否在 1..12 之间。 【最后一段更正】如果你想知道用户提交的某个变量 $age (年龄)是否真的是整数(其实是符合整数规则的字符串):if ( IsIntStr($age) ) echo "is integer";else echo "not integer";实际编程,人们可能使用正则表达式之类,比上面的简练多了,但基本原理都是一样的:判断给定字符串的内容是否符合某个规则——整数只能是"+-0123456789" 组成,实数可以再加上 ".eE" 这些东西,如果是特殊的整数,例如月份,你还要自己判断它是否在 1..12 之间。另外,PHP 中,一般也不必使用强制类型转换,PHP 会在必要时自动替你转换:$num1 = "123"; //字符串,但是符合整数的规则$num2 = $num1 * 2; //这是数的运算,所以自动把 $num1 转换为整数: $num2 = 123 * 2$str = $num1 . "abc"; //这是字符串的运算,所以把 $num1 当作字符串: $str = "123" . "abc" $strif(______){......}else{.....}麻烦哪位给我填上一个正则表达式,要求判断$str是不是有效整数,再来一个判断是不是有效实数的,先谢了。 $strif(ereg("^([0-9])+$",$str))//整数的;{......}else{.....}ereg("^([0-9])+(\.[0-9])*",$str) 实型的例子.<?php$mailstr="1.123412341234123";if(ereg("^([0-9])+(\.[0-9]{0,40})$",$mailstr)) {print "ok"; }else { print "no";}?> 苏州php程序员薪资 计算机网络的一道习题,请高手指点 提高PHP+MYSQL开发的性能的最主要的有哪些办法阿? php做垂直搜索都需要哪些知识啊 php+mysql中文乱码问题 兄弟们有没有用eclipse写php的,你们是有PHPEclipse还是PDT 求正则表达式。 急!!!!!!!关于php+apache+winxp下的环境配置的问题,请教高手,解决后立即送分! 文件上传问题 急急急!!! 如何用php做一个对文章进行全文搜索的程序 php与javascript问题? 十万火急!
-----------------------------------------------------------正好用秋水大虾的方法。如果判断是否整数可以用我的方法
if(intval($int)==$int)
echo "是整数";用正这表达式也可以
Finds whether a variable is a number or a numeric string
秋水大虾的方法我还不会用。if(intval($int)==$int)
echo "是整数";
//其中的intval($int)是整数了,而$int仍是字符串,可以么?
{ echo '时间输入格式有错误!';
exit;
}
这时,这几个变量的值为"aaaa"都没事,if不成立。
就如同你要判断杯子里的东西是不是茶,你不管三七二十一,先把里面的东西换成茶……
这不分明是自己骗自己吗?呵呵事实上,用 (int) 进行强制转换时,如果被转换的字符串不符合整数,就转换为 0:
(int) "aaaa" = 0
is_int( (int) "aaaa" ) 当然返回 true 啦(随便把 "aaaa" 换成什么都是 true)
你没有理解 PHP 的“类型”的真正含义——PHP 不是 C 语言那种强类型语言,它的变量类型不过是个人为加的标签,就如同一堆肉,插上“狗肉”的牌子,它便是狗肉,插上“羊肉”的牌子,它便是羊肉(当然,要符合最起码的规则,例如 "aaaa" 无论如何也插不上“整数”的标签,硬插上了,它就只好变成 0)。你这里要判断的其实不是变量的“类型”,而是其内容!
以上几位都说了,为了让你更清楚,给你个最笨的例子:// 判断一个字符串的内容是否符合整数的规定(即是否所有字符都是数字)
function IsIntStr($str)
{
for ( $i = 0; $i < strlen($str); $i ++ )
{
$ch = $str[$i];
if ( $ch < '0' || $ch > '9' )
return false;
}
return true;
}如果你想知道用户提交的某个变量 $age (年龄)是否真的是整数:if ( IsInt($age) )
echo "is integer";
else
echo "not integer";实际编程,人们可能使用正则表达式之类,比上面的简练多了,但基本原理都是一样的:判断给定字符串的内容是否符合某个规则——整数只能是
"+-0123456789" 组成,实数可以再加上 ".eE" 这些东西,如果是特殊的整数,例如月份,你还要自己判断它是否在 1..12 之间。
echo "is integer";
else
echo "not integer";实际编程,人们可能使用正则表达式之类,比上面的简练多了,但基本原理都是一样的:判断给定字符串的内容是否符合某个规则——整数只能是
"+-0123456789" 组成,实数可以再加上 ".eE" 这些东西,如果是特殊的整数,例如月份,你还要自己判断它是否在 1..12 之间。
另外,PHP 中,一般也不必使用强制类型转换,PHP 会在必要时自动替你转换:$num1 = "123"; //字符串,但是符合整数的规则
$num2 = $num1 * 2; //这是数的运算,所以自动把 $num1 转换为整数: $num2 = 123 * 2
$str = $num1 . "abc"; //这是字符串的运算,所以把 $num1 当作字符串: $str = "123" . "abc"
if(______)
{
......
}
else
{
.....
}
麻烦哪位给我填上一个正则表达式,要求判断$str是不是有效整数,再来一个判断是不是有效实数的,先谢了。
if(ereg("^([0-9])+$",$str))//整数的;
{
......
}
else
{
.....
}
ereg("^([0-9])+(\.[0-9])*",$str)
<?php
$mailstr="1.123412341234123";
if(ereg("^([0-9])+(\.[0-9]{0,40})$",$mailstr)) {
print "ok";
}
else {
print "no";
}
?>