你的位置:首页 > 网站技术 >正文
29
七月
分类:网站技术 | 评论数:8 | 点击数:13292 | 发表日期时间:2011-07-29 13:11:37

分享到:


本文导读:

  近日使用PHP搭建站点,PHP的功能很强大,其中有一点主要是函数多,我接触得不多,所以对于PHP的函数研究得也不是很多。但今天碰到的一个intval函数引起的问题,花了一番功夫才查找到原因,很有意义,于是跟大家分享一下。
 

正文

  近日使用PHP搭建站点,PHP的功能很强大,其中有一点主要是函数多,我接触得不多,所以对于PHP的函数研究得也不是很多。但今天碰到的一个intval函数引起的问题,花了一番功夫才查找到原因,很有意义,于是跟大家分享一下。
  我的讲述问题的方法是,先说明intval函数的用法,再列出PHP程序出错的问题,最后是讲述解决问题的过程及解决方法。

  一、intval函数的用法
  网上搜索,很容易得到,现在附上用法及解释。
  php中intval()函数
  将给定变量转换成整型变量。变量不能是array和object格式
  intintval(mixedvar[,intbase])第二个参数只有变量是字符串的时候才有用
  var可以是任何标量类型。intval()不能用于array或object。
  除非var参数是字符串,否则intval()的base参数不会有效果。
  例子:<?php
  intval(42,8);//=>34
  intval(42,8);//=>42!
  ?>
  说明:当第一个参数为字符串时,第二个参数是指定第一个参数的进制,比如intval("12",5)就是把“12”当成5进制的数,然后把这个5进制的数转换成10进制整数,并返回。例:
  intval("12",5)=7;(5进制的12=10进制7)
  intval("1011",2)=11;(2进制的1011=10进制11)
  
  应用到PHP中一般的用法是把字符串转换成数值,即intval("数值变量"),例:intval("92"),echo输出该值的结果是92。
  
  二、PHP程序故障
  <?php
  $catid=intval($_REQUEST["sercatid"]);
  if($catid==""){
  $catidsear="";
  }else{
  $catidsear="andpctdaclass=".$catid;
  }
  ?>
  变量sercatid由以下的表单提交
  <selectname="sercatid"><optionvalue="">AllCategories</option>
  
  程序功能是:判断表单提交是AllCategories的话,程序则提交空值给上面的PHP处理程序,变量catid为空值,则给变量$catidsear赋空值。
  
  但程序的运行结果是,$catidsear="andpctdaclass=".$catid;
  
  三、原因分析
  根据PHP程序运行结果判断
  if语句判断的($catid=="")并非为空,所以执行了ELSE语句。可是表单提交的是空值呀。

  再仔细检查程序,发现
  $catid=intval($_REQUEST["sercatid"]);这一句程序里使用了intval函数,为了证明问题所在,所以输出该值试试
  <?php
  echointval($_REQUEST["sercatid"]);
  ?>
  竟然发现输出的结果是0。
  
  所以故障就在于intval对于空值的处理是变成数字0了。所以IF的判断语句执行了ELSE。解决方法不使用intval函数,或者修改IF语句。如下:
  <?php
  $catid=intval($_REQUEST["sercatid"]);
  if($catid==0){
  $catidsear="";
  }else{
  $catidsear="andpctdaclass=".$catid;
  }
  ?>
  故障排除。

本文标签:
PHP
源码

上一篇:添加腾讯微博秀

下一篇:再拍石井河

猜你喜欢:
评论:

8楼   jmk  2011-8-9 16:15:06  回复该评论

写的不错、、

7楼   零度记忆  2011-8-3 13:50:48  回复该评论

不错呀,厉害

6楼   武汉seo  2011-8-2 21:12:25  回复该评论

来看看博主。。。

  2011-8-4 11:49:28  回复该评论

谢谢支持!

5楼   卢松松  2011-8-2 14:57:01  回复该评论

你选择的是PHP环境一键安装包吗?

  2011-8-4 11:48:56  回复该评论

提醒得对,可能是运行环境的影响。

4楼   软木地板  2011-8-1 16:40:53  回复该评论

来看看啊~~~

3楼   怎样瘦脸  2011-8-1 16:24:41  回复该评论

来过,沙发了

2楼   大连  2011-7-30 17:21:06  回复该评论

似乎很管用啊 !

1楼   混小子  2011-7-30 10:52:38  回复该评论

来看下 呵呵呵呵

昵称(必填)

邮箱

网址

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。