多数大学生出来选择的工作和专业无关
首页 > 专业知识

PHP整数取余返回负数的相关解决方法

时间:2018-09-08 16:15:35 [来源]:郑州PHP培训学校

   PHP整数取余返回负数的相关解决方法

  PHP语言虽然功能强大,但并不代表其没有缺点,在编写代码的过程中未免会遇到一些让人头痛的问题。下面我们将为大家介绍有关PHP整数取余返回负数的解决办法。
  我们先来看个例子.
  复制代码代码如下:
  $res = 16244799483;
  echo $res%9999999;
  // 输出结果为 -5069794, 正确的结果应该是4801107其实这也算上PHP一个BUG吧.最主要是PHP是个弱类型语言.他内置了机器来判断用户的类型.
  但是机器毕竟是机器.也有判断出错的时候.就像上面.所以这时候我们就需要人工干预下.
  所以我就想到要用下面的方法来解决PHP整数取余返回负数的问题.
  复制代码代码如下:
  $res = floatval(16244799483);
  var_dump($res % 9999999);
  我们看到结果还是错误的-5069794.
  但是值得注意的是返回是一个int类型的.
  详细思考了一下.PHP整数取余返回负数的问题是这样处理的.
  PHP取余默认为整数的.
  而且当你定义$res = 16244799483;
  其实就已经溢出了.所以要加上强制类型转换.变成float类型.
  但是这样还不够.因为%这个取模计算还是针对整数的.
  所以我们需要一个函数fmod.是针对float类型的.
  所以最终PHP整数取余返回负数的解决办法为:
  复制代码代码如下:
  $res = floatval(16244799483);
  var_dump(fmod($res,9999999));
  这样我们就解决了PHP整数取余返回负数这个问题.:)PHP函数getenv简介和使用实例
  getenv(PHP 4, PHP 5)
  复制代码代码如下:
  // getenv — 获取一个环境变量的值
  函数说明:
  string getenv ( string $varname )
  复制代码代码如下:
  // 获取一个环境变量的值。
  // 使用 phpinfo() 你可以看到所有环境变量的列表。
  参数说明:
  复制代码代码如下:
  $varname 变量名。
  函数返回值:
  复制代码代码如下:
  // 返回环境变量 varname 的值, 如果环境变量 varname 不存在则返回 FALSE。
  函数应用实例:
  复制代码代码如下:
  // getenv() 使用示例
  $ip = getenv('REMOTE_ADDR');
  // 或简单仅使用全局变量($_SERVER 或 $_ENV)$ip = $_SERVER['REMOTE_ADDR'];
  ?>
  php计算程序运行时间的简单例子分享
  首先我们分析一下原理,要想得到程序运行时间,那么可以在程序最开始运行的时候定义一个变量记下当前时间,然后等我们程序运行完之后再记录一下当前的时间,两者相差就是该程序运行花费的时间了。
  这里介绍一下 microtime() 这个函数,microtime() 用的不多,但是不能不知道这个函数,它是返回当前 Unix 时间戳和微秒数。例如:echo microtime(); 会返回:0.08845800 1376983061。所以可以用explode函数将它以空格为标识分割成一个数组,那么此时的$starttime[0]=0.08845800(微秒数),$starttime[1]=1376983061(当前秒数,相当于time()所得的结果)。
  示例代码:
  复制代码代码如下:
  //程序运行时间
  $starttime = explode(' ',microtime());
  echo microtime();
  /*········以下是代码区·········*/for($i=0;$i<1000000;$i++){
  $i;
  }
  /*········以上是代码区·········*///程序运行时间
  $endtime = explode(' ',microtime());
  $thistime = $endtime[0]+$endtime[1]-($starttime[0]+$starttime[1]);$thistime = round($thistime,3);
  echo "本网页执行耗时:".$thistime." 秒。".time();?>
  最后两者时间相减,再用round()函数对执行的时间保留自己所需的小数位就ok了。比如这里是计算循环一百万次所需要的时间为:0.116秒,如下图:
  为了程序的整洁性,我们可以将此代码写成一个类,用的时候引入进来,然后在程序开始前实例化这个类,结束再调用一个方法也可以实现这功能。
 

上一篇:PHP需要注意的网站安全性问题

下一篇:让PHP引擎全速运转的三个绝招