1、求解intval((0.1+0.7)*10)?
7
如果你仔细看过在PHP手册中,对于浮点数据类型的说明,就会看到其中有专门的一个警告提示,就谈到这个问题:
关于浮点数精度的警告 显然简单的十进制分数如同 0.1 或 0.7不能在不丢失一点点精度的情况下转换为内部二进制的格式。这就会造成混乱的结果:例如,floor((0.1+0.7)*10)通常会返回 7 而不是预期中的 8,因为该结果内部的表示其实是类似 7.9。 这和一个事实有关,那就是不可能精确的用有限位数表达某些十进制分数。例如,十进制的 1/3 变成了 0.3。 所以永远不要相信浮点数结果精确到了最后一位,也永远不要比较两个浮点数是否相等。如果确实需要更高的精度,应该使用任意精度数学函数或者 gmp 函数。2、在PHP中,当前脚本的名称(不包括路径和查询字符串)记录在预定义变量(1)中;获取服务器管理员邮箱在预定义变量(2)中。
echo $_SERVER['PHP_SELF'];
echo $_SERVER["SERVER_ADMIN"];
总结下$_SERVER这个超级变量
$_SERVER['PHP_SELF'] #当前正在执行的文件名,与 document root相关。
$_SERVER['argv'] #传递给该的参数。
$_SERVER['argc'] #包含传递给程序的的个数(如果运行在命令行模式)。
$_SERVER['GATEWAY_INTERFACE'] #服务器使用的 CGI 规范的版本。例如,“CGI/1.1”。
$_SERVER['SERVER_NAME'] #当前所在服务器的名称。
$_SERVER['SERVER_SOFTWARE'] #服务器标识的字串,在响应请求时的头部中给出。
$_SERVER['SERVER_PROTOCOL'] #请求页面时通信协议的名称和版本。例如,“HTTP/1.0”。
$_SERVER['REQUEST_METHOD'] #访问页面时的请求方法。例如:“GET”、“HEAD”,“POST”,“PUT”。
$_SERVER['QUERY_STRING'] #查询(query)的字符串。
$_SERVER['DOCUMENT_ROOT'] #当前所在的文档根目录。在服务器配置文件中定义。
$_SERVER['HTTP_ACCEPT'] #当前请求的 Accept: 头部的内容。
$_SERVER['HTTP_ACCEPT_CHARSET'] #当前请求的 Accept-Charset: 头部的内容。例如:“iso-8859-1,*,utf-8”。
$_SERVER['HTTP_ACCEPT_ENCODING'] #当前请求的 Accept-Encoding: 头部的内容。例如:“gzip”。
$_SERVER['HTTP_ACCEPT_LANGUAGE']#当前请求的 Accept-Language: 头部的内容。例如:“en”。
$_SERVER['HTTP_CONNECTION'] #当前请求的 Connection: 头部的内容。例如:“Keep-Alive”。
$_SERVER['HTTP_HOST'] #当前请求的 Host: 头部的内容。
$_SERVER[''] #链接到当前页面的前一页面的 URL 地址。
$_SERVER[''] #当前请求的 User_Agent: 头部的内容。
$_SERVER['HTTPS'] — 如果通过https访问,则被设为一个非空的值(on),否则返回off
$_SERVER['REMOTE_ADDR'] #正在浏览当前页面用户的 IP 地址。
$_SERVER['REMOTE_HOST'] #正在浏览当前页面用户的。
$_SERVER['REMOTE_PORT'] #用户连接到服务器时所使用的端口。
$_SERVER['SCRIPT_FILENAME'] #当前执行的名。
$_SERVER['SERVER_ADMIN'] #信息
$_SERVER['SERVER_PORT'] #服务器所使用的端口
$_SERVER['SERVER_SIGNATURE'] #包含服务器版本和名的字符串。
$_SERVER['PATH_TRANSLATED'] #当前所在文件系统(不是文档根目录)的基本路径。
$_SERVER['SCRIPT_NAME'] #包含当前的路径。这在页面需要指向自己时非常有用。
$_SERVER['REQUEST_URI'] #访问此页面所需的 URI。例如,“/index.html”。
3、执行程序段<?php echo 8%(-2) ?>将输出(3)
0
4. php中简单的短路问题
$a = 3; $b = 5; if ($a = 5 || $b = 5) { $a++; $b++; } echo $a;
可以看成bool ? 表达式1 : 表达式2 这里的bool是($a=5||$b=5)看清楚里面是赋值,当判断$a=5 恒成立,则返回$a 值为1 ,而忽视了后面的$b赋值,然后通过 $b++;输出 1---4