php中四舍五入取整函数详细介绍

 更新时间:2016年11月25日 15:06  点击:1364
本文章中我们介绍了php中四个常用的取整和四舍五入函数ceil,floor,round,intval ,下面我们来详细介绍。

ceil — 进一法取整
说明
float ceil ( float value )
返回不小于 value 的下一个整数,value 如果有小数部分则进一位。ceil() 返回的类型仍然是 float,因为 float 值的范围通常比 integer 要大。
例子 1. ceil() 例子

 代码如下 复制代码
<?php
echo ceil(4.3); // 5
echo ceil(9.999); // 10
?>

在分页时我们会常用到的


//页码计算: 

 代码如下 复制代码
   $lastpg=ceil($totle/$displaypg); //最后页,也是总页数 
   $lastpg=$lastpg ? $lastpg : 1; //没有显示条目,置最后页为1 
   $page=min($lastpg,$page); 
   $prepg=$page-1; //上一页 
   $nextpg=($page==$lastpg ? 0 : $page+1); //下一页 
   $firstcount=($page-1)*$displaypg; 

floor — 舍去法取整
说明
float floor ( float value )
返回不大于 value 的下一个整数,将 value 的小数部分舍去取整。floor() 返回的类型仍然是 float,因为 float 值的范围通常比 integer 要大。
例子 1. floor() 例子

例子
在本例中,我们将对不同的数应用 floor() 函数:

 代码如下 复制代码

<?php
echo(floor(0.60));
echo(floor(0.40));
echo(floor(5));
echo(floor(5.1));
echo(floor(-5.1));
echo(floor(-5.9))
?>输出:

0
0
5
5
-6
-6

round — 对浮点数进行四舍五入
说明
float round ( float val [, int precision] )
返回将 val 根据指定精度 precision(十进制小数点后数字的数目)进行四舍五入的结果。precision 也可以是负数或零(默认值)。

注释:PHP 默认不能正确处理类似 "12,300.2" 的字符串。

注释:prec 参数是在 PHP 4 中被引入的。。
例子

 代码如下 复制代码

<?php
echo(round(0.60));
echo(round(0.50));
echo(round(0.49));
echo(round(-4.40));
echo(round(-4.60));
?>输出:

1
1
0
-4
-5

intval—对变数转成整数型态

变量转成整数类型。

语法: int intval(mixed var, int [base]);

返回值: 整数

函数种类: PHP 系统功能

 
 
内容说明


本函数可将变量转成整数类型。可省略的参数 base 是转换的基底,默认值为 10。转换的变量 var 可以为数组或类之外的任何类型变量。

例子intval()

 代码如下 复制代码
<?php
echo intval(4.3); //4
echo intval(4.6); // 4
?>

注:intval如果是字符型的会自动转换为0 如

intval('abc');

输出结果 0

如果是

intval('5fd');

输出结果是

5

文章详细的介绍了关于详细介绍在PHP中单引号和双引号的区别,有需要了解的同学可参考一下。

1、定义字符串   
在PHP中,字符串的定义可以使用单引号,也可以使用双引号。但是必须使用同一种单或双引号来定义字符串,如:‘Hello"和“Hello'为非法的字符串定义。   
定义字符串时,只有一种引号被视为定义符,即单引号或双引号。于是,如果一个字符串由双引号开始,那么只有双引号被分析器解析。这样,你就可以在双引号串中包含任何其他字符,甚至单引号。下面的引号串都是合法的:

Php代码

$s = "I am a 'single quote string' inside a double quote string";

$s = 'I am a "double quote string" inside a single quote string';

$s = "I am a 'single quote string' inside a double quote string";

$s = 'I am a "double quote string" inside a single quote string';   

而串 "Why doesn't "this" work?" 则会被分为三段。如果在这个串中想要表示出双引号,则可以使用转义符""(反斜线),变成 "Why doesn't "this" work?" 即可。

2、字符串变量中的单、双引号   

PHP允许我们在双引号串中直接包含字串变量,我们可以发现下面的两个字串的处理结果是相同的。

$full_name = $first_name . ' ' . $last_name;

$full_name = "$first_name $last_name";   

单引号串和双引号串在PHP中的处理是不相同的。双引号串中的内容可以被解释而且替换,而单引号串中的内容总被认为是普通字符。例如:

Php代码

$foo = 2;

echo "foo is $foo"; // 打印结果: foo is 2

echo 'foo is $foo'; // 打印结果: foo is $foo

echo "foo is $foon"; // 打印结果: foo is 2 (同时换行)

echo 'foo is $foon'; // 打印结果: foo is $foon

$foo = 2;

echo "foo is $foo"; // 打印结果: foo is 2

echo 'foo is $foo'; // 打印结果: foo is $foo

echo "foo is $foon"; // 打印结果: foo is 2 (同时换行)

echo 'foo is $foon'; // 打印结果: foo is $foon   

正如你所看到的,在单引号串中甚至反斜杠也失去了他的扩展含义(除了插入反斜杠\和插入单引号')。所以,当你想在字串中进行变量代换和包 含n(换行符)等转义序列时,你应该使用双引号。单引号串可以用在其他任何地方,脚本中使用单引号串处理速度会更快些,因为PHP语法分析器对单引号串 的处理方式比较单纯,而双引号的处理由于串内部也需要解析,因此更复杂些,所以处理速度略慢。   

在字符串中引用复杂的变量组合时,可能会产生一些问题,下面的代码会正常工作:

Php代码

echo "value = $foo";

echo "value = $a[$i]";

echo "value = $foo";

echo "value = $a[$i]";   

而下面的代码却不能得到我们希望的结果:

echo "value = $a[$i][$j]"; //我们希望打印二维数组$a的某个元素。   

为避免这些字串使用中的潜在问题,我们通常把复杂的变量从字串中分离开来,就像这样:echo 'value = ' . $a[$i][$j];//字符串的连接用点(.)   

还有一种办法是将复杂变量用花括号括起来,语法分析器就能正确辨认了:

echo "value = {$a[$i][$j]}" //打印二维数组$a的某个元素   

这样,又出现新问题了。当我们想在字串中引用花括号字符本身时,就要记得使用转义符了:

Php代码

$var = 3;

echo "value = {$var}"; // 打印结果 "value = 3"

echo "value = {$var}"; // 打印结果 "value = {3}"

$var = 3;

echo "value = {$var}"; // 打印结果 "value = 3"

echo "value = {$var}"; // 打印结果 "value = {3}"

3、在SQL语句中   

这是会经常遇到的问题,在插入数据库的SQL语句是采用单引号来定义字符串,如果要将一个含有单引号的字符串插入数据库,这个SQL语句就会出错。

如:$sql="insert into userinfo (username,password) Values('O'Kefee','123456')"   

此时,处理的方法之一是在SQL语句中加入转义符反斜线,

即:……Values('O'Kefee',……   

当然也可以使用函数 addslashes(),该函数的功能就是加入转义符,

即:$s = addslashes("O'Kefee") ……Values('".$s."',……   

还有一种方法是设置php.ini中的magic-quotes选项,打开该选项,则通过表单提交的信息中如果有单引号是,将会自动加上如转义符。因此不用使用其他函数了。

补充: 这就要从双引号和单引号的作用讲起: 双引号里面的字段会经过编译器解释然后再当作HTML代码输出,但是单引号里面的不需要解释,直接输出。

例如:

$abc='I love u';

echo $abc //结果是:I love u

echo '$abc' //结果是:$abc

echo "$abc" //结果是:I love u

所以在对数据库里面的SQL语句赋值的时候也要用在双引号里面SQL="select a,b,c from ..." 但是SQL语句中会有单引号把字段名引出来

例如:select * from table where user='abc';

这里的SQL语句可以直接写成SQL="select * from table where user='abc'"

但是如果象下面:

$user='abc';

SQL1="select * from table where user=' ".$user." ' ";对比一下

SQL2="select * from table where user=' abc ' "

我把单引号和双引号之间多加了点空格,希望你能看的清楚一点。

也就是把'abc' 替换为 '".$user."'都是在一个单引号里面的。只是把整个SQL字符串分割了。 SQL1可以分解为以下3个部分

1:"select * from table where user=' "

2:$user

3:" ' "

字符串之间用 . 来连接

有时我们要输出字符中的变量我们可能会用到dump_var但如果我们想自动输出,我们就需要算定函数了。
 代码如下 复制代码

<?php
function show_var($var) {
if (is_scalar($var)) {
echo $var;
} else {
var_dump($var);
}
}
$pi = 3.1416;
$proteins = array("hemoglobin", "cytochrome c oxidase", "ferredoxin");

show_var($pi);
// 打印:3.1416

show_var($proteins)
// 打印:
// array(3) {
// [0]=>
// string(10) "hemoglobin"
// [1]=>
// string(20) "cytochrome c oxidase"
// [2]=>
// string(10) "ferredoxin"
// }
?>


描述
bool is_scalar ( mixed $var )
如果给出的变量参数 var 是一个标量, is_scalar() 返回 TRUE,否则返回 FALSE。

标量变量是指那些包含了 integer、float、string 或 boolean的变量,而 array、object 和 resource 则不是标量。


Note:

尽管当前的 resource 类型是居于整数的,但 is_scalar() 不会把它们当作是标量,因为资源是抽象数据类型。不能依赖于执行细节,因为它可能会改变。

本文章详细的介绍了switch语句在php中用法,以及switch case在条件为0时的处理办法,有需要了解的同学可以参考一下。

Switch 语句
如果您希望有选择地执行若干代码块之一,请使用 Switch 语句。

使用 Switch 语句可以避免冗长的 if..elseif..else 代码块。

语法

 代码如下 复制代码
switch (expression)
{
case label1:
  code to be executed if expression = label1;
  break; 
case label2:
  code to be executed if expression = label2;
  break;
default:
  code to be executed
  if expression is different
  from both label1 and label2;
}

实例
工作原理:

对表达式(通常是变量)进行一次计算
把表达式的值与结构中 case 的值进行比较
如果存在匹配,则执行与 case 关联的代码
代码执行后,break 语句阻止代码跳入下一个 case 中继续执行
如果没有 case 为真,则使用 default 语句

 代码如下 复制代码

    switch ($cps_sign) {
        case 'yiqifa':
        case 'chengguo':
        case 'roiyiqifa':
        case 'lkt':
        case 'fanli':
        case 'qqfanli':
        case 'weiyi':
        case 'yoyi':
            $sql = "INSERT into sa_cps_list (`uv`,`s_time`,`cps`,`url`) VALUES ('{$uv}',{$timestamp},'{$cps_sign}','{$url}')";
            echo $sql;exit();
            mysql_query($sql);
            break;
        default:
            break;
    }


仔细看了一下程序,莫非是switch和case惹的祸?于是,写DEMO检测。
//输出结果为:bool(true) bool(false) xxx

 代码如下 复制代码

var_dump(""==0);   
var_dump(""===0);

$errid = '';
switch ($errid) {
    case 0 :
        echo "xxx";
        break;
    default:
        echo "yyy";
}

真相大白了,原来 switch/case结构中,比较case值用的是==而不是===。这样,空就和0相等了,我收到的结果也当然就是错误的了。
没办法,程序不想改,毕竟多条件的时候switch/case要比一堆if让人看着舒心。想办法吧。呵呵。

 代码如下 复制代码

$result = '';
if(is_numeric($err_id) === false) { 
$result .= '宕机或超时,没有返回值';
return $result;
}
switch ($err_id) {
    case xxx :
        ..........
}

问题解决了,先判断一下返回值是否是数值,如果不是数值的话,直接return。
以后写switch/case判断数字的时候一定要小心,尤其是有0这个败家值存在的时候

switch 语句和 elseif 语句的比较
在 switch 语句中,条件只求一次,然后和每个 case 比较,而在 elseif 语句中,条件会再次求值。如果你的条件比较复杂,或者是多次循环,用 switch 语句速度会更加快些

本文章来告诉你如何在php5中的php.ini中配置session的详细教程,包括了路径等等一些相关的操作,有需要了解的同学可参考一下。

php.ini中有关session的一些设定会影响到session函数的使用,以php5版本为例,我们来了解一下php.ini中有关session的设定。
;处理session存取的模式(预设:files)
session.save_handler = files
;session档案存放路径(预设:/tmp)
session.save_path = /tmp
;session使用cookie的功能(预设:启动 1)
session.use_cookies = 1
;session的名字(预设:PHPSESSID)
session.name = PHPSESSID
;自动启动(预设:关 0,此处可以改为1)
session.auto_start = 0
;session使用cookie的生存期,以秒为单位(预设:随浏览器关闭而消失 0)
session.cookie_lifetime = 0
;session使用cookie的路径(预设:与domian相同或根路径 /)
session.cookie_path = /
;session使用cookie的域名称(预设:空)
session.cookie_domain =
;处理连续资料的方式,本功能只有WDDX模组或PHP内部使用(预设:php)
session.serialize_handler = php
;按千分之一的比率进行垃圾收集
;垃圾收集的处理几率(预设:1)
session.gc_probability = 1
;设置进程比率,(php5新增参数,预设:1000)
session.gc_divisor = 1000
;(垃圾收集)被处理前的生存期(预设:1440[秒])
session.gc_maxlifetime = 1440
;PHP 4.2和以前的版本都有个BUG,即使你禁止了”允许注册全局变量”.仍然可以让你在全局变量范围中初始化一个SESSION的值
;PHP 4.3 和以后的版本会发出相应的警告,你可以禁止警告.PHP5中,只有你打开了bug_compat_42(=ON),警告才会显示.
session.bug_compat_42,0
session.bug_compat_warn = 1
;session在重新整理时检查session是否还存在(预设:空)
session.referer_check =
;特别设定session值的长度(预设:关)
session.entropy_length = 0
;特别设定session值的文件
session.entropy_file =
;使用cache限制器(预设:不要cache)
session.cache_limiter = nocache
;使用cache的生存期
session.cache_expire = 180
;使用sid值(session_id)传送模式(基于安全,预设:关)
session.use_trans_sid = 0
;选择一个HASH函数,0为MD5(128比特强度),1为SHA-1(160比特强度)
session.hash_function = 0
;定义当转换2进制hash数据为一些可读的数据时,每个字符存储多少个比特.
;4 比特: 0-9, a-f
;5 比特: 0-9, a-v
;6 比特: 0-9, a-z, A-Z, “-”, “,”
session.hash_bits_per_character = 5
;URL重指向的标签
url_rewriter.tags = “a=href,area=href,frame=src,input=src,form=fakeentry”
对以上设置进行修改以后应该重启Apache服务器,以加载以上的修改。

配置session其实不难只要大家好好仔细的看看就KO了。

[!--infotagslink--]

相关文章

  • php正确禁用eval函数与误区介绍

    eval函数在php中是一个函数并不是系统组件函数,我们在php.ini中的disable_functions是无法禁止它的,因这他不是一个php_function哦。 eval()针对php安全来说具有很...2016-11-25
  • php中eval()函数操作数组的方法

    在php中eval是一个函数并且不能直接禁用了,但eval函数又相当的危险了经常会出现一些问题了,今天我们就一起来看看eval函数对数组的操作 例子, <?php $data="array...2016-11-25
  • Python astype(np.float)函数使用方法解析

    这篇文章主要介绍了Python astype(np.float)函数使用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-06-08
  • Python中的imread()函数用法说明

    这篇文章主要介绍了Python中的imread()函数用法说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-16
  • C# 中如何取绝对值函数

    本文主要介绍了C# 中取绝对值的函数。具有很好的参考价值。下面跟着小编一起来看下吧...2020-06-25
  • C#学习笔记- 随机函数Random()的用法详解

    下面小编就为大家带来一篇C#学习笔记- 随机函数Random()的用法详解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2020-06-25
  • 源码分析系列之json_encode()如何转化一个对象

    这篇文章主要介绍了源码分析系列之json_encode()如何转化一个对象,对json_encode()感兴趣的同学,可以参考下...2021-04-22
  • php中去除文字内容中所有html代码

    PHP去除html、css样式、js格式的方法很多,但发现,它们基本都有一个弊端:空格往往清除不了 经过不断的研究,最终找到了一个理想的去除html包括空格css样式、js 的PHP函数。...2013-08-02
  • c# 数据类型占用的字节数介绍

    本篇文章主要是对c#中数据类型占用的字节数进行了详细的介绍。需要的朋友可以过来参考下,希望对大家有所帮助...2020-06-25
  • 金额阿拉伯数字转换为中文的自定义函数

    CREATE FUNCTION ChangeBigSmall (@ChangeMoney money) RETURNS VarChar(100) AS BEGIN Declare @String1 char(20) Declare @String2 char...2016-11-25
  • Nest.js参数校验和自定义返回数据格式详解

    这篇文章主要给大家介绍了关于Nest.js参数校验和自定义返回数据格式的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-03-28
  • Android开发中findViewById()函数用法与简化

    findViewById方法在android开发中是获取页面控件的值了,有没有发现我们一个页面控件多了会反复研究写findViewById呢,下面我们一起来看它的简化方法。 Android中Fin...2016-09-20
  • C++中 Sort函数详细解析

    这篇文章主要介绍了C++中Sort函数详细解析,sort函数是algorithm库下的一个函数,sort函数是不稳定的,即大小相同的元素在排序后相对顺序可能发生改变...2022-08-18
  • PHP用strstr()函数阻止垃圾评论(通过判断a标记)

    strstr() 函数搜索一个字符串在另一个字符串中的第一次出现。该函数返回字符串的其余部分(从匹配点)。如果未找到所搜索的字符串,则返回 false。语法:strstr(string,search)参数string,必需。规定被搜索的字符串。 参数sea...2013-10-04
  • index.php怎么打开?如何打开index.php?

    index.php怎么打开?初学者可能不知道如何打开index.php,不会的同学可以参考一下本篇教程 打开编辑:右键->打开方式->经文本方式打开打开运行:首先你要有个支持运行PH...2017-07-06
  • C#中decimal保留2位有效小数的实现方法

    这篇文章主要介绍了C#中decimal保留2位有效小数的实现方法,针对decimal变量保留2位有效小数有多种方法,可以使用Math.Round方法以及ToString先转换为字符串等操作来实现。具体实现方法感兴趣的朋友跟随小编一起看看吧...2020-06-25
  • PHP函数分享之curl方式取得数据、模拟登陆、POST数据

    废话不多说直接上代码复制代码 代码如下:/********************** curl 系列 ***********************///直接通过curl方式取得数据(包含POST、HEADER等)/* * $url: 如果非数组,则为http;如是数组,则为https * $header:...2014-06-07
  • php中的foreach函数的2种用法

    Foreach 函数(PHP4/PHP5)foreach 语法结构提供了遍历数组的简单方式。foreach 仅能够应用于数组和对象,如果尝试应用于其他数据类型的变量,或者未初始化的变量将发出错误信息。...2013-09-28
  • C语言中free函数的使用详解

    free函数是释放之前某一次malloc函数申请的空间,而且只是释放空间,并不改变指针的值。下面我们就来详细探讨下...2020-04-25
  • 解决Springboot get请求是参数过长的情况

    这篇文章主要介绍了解决Springboot get请求是参数过长的情况,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-09-17