返回首页
当前位置: 主页 > 编程语言 > PHP教程 >

intval函数的用法及intval函数引起PHP程序故障一例

时间:2016-03-11 12:56来源:电脑教程学习网 www.etwiki.cn 编辑:admin

近日使用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;
  }
  ?>
  故障排除。

------分隔线----------------------------
标签(Tag):php php实例教程 php5 php源代码 php基础教程 php技巧 php6 php教程
------分隔线----------------------------
推荐内容
猜你感兴趣