㈠ php中函数rand和mt_rand的区别比较
PHP函数rand和mt_rand
mt_rand()
比rand()
快四倍
很多老的
libc
的随机数发生器具有一些不确定和未知的特性而且很慢。PHP
的
rand()
函数默认使用
libc
随机数发生器。mt_rand()
函数是非正式用来替换它的。该函数用了
Mersenne
Twister
中已知的特性作为随机数发生器,mt_rand()
可以产生随机数值的平均速度比
libc
提供的
rand()
快四倍。
mt_rand()
比rand()
快四倍
mt_rand
—
生成更好的随机数
(PHP
3
>=
3.0.6,
PHP
4,
PHP
5)
int
mt_rand
(
[int
min,
int
max]
)
很多老的
libc
的随机数发生器具有一些不确定和未知的特性而且很慢。PHP
的
rand()
函数默认使用
libc
随机数发生器。mt_rand()
函数是非正式用来替换它的。该函数用了
Mersenne
Twister(马其塞旋转)
中已知的特性作为随机数发生器,它可以产生随机数值的平均速度比
libc
提供的
rand()
快四倍。
如果没有提供可选参数
min
和
max,mt_rand()
返回
0
到
RAND_MAX
之间的伪随机数。
例如想要
5
到
15(包括
5
和
15)之间的随机数,用
mt_rand(5,
15)。
注:
自
PHP
4.2.0
起,不再需要用
srand()
或
mt_srand()
函数给随机数生成器播种,现已自动完成。
rand
—
产生一个随机整数
(PHP
3,
PHP
4,
PHP
5)
int
rand
(
[int
min,
int
max]
)
如果没有提供可选参数
min
和
max,rand()
返回
0
到
RAND_MAX
之间的伪随机整数。例如想要
5
到
15(包括
5
和
15)之间的随机数,用
rand(5,
15)。
注:
在某些平台下(例如
Windows)RAND_MAX
只有
32768。如果需要的范围大于
32768,那么指定
min
和
max
参数就可以生成大于
RAND_MAX的数了,或者考虑用
mt_rand()
来替代之。
注:
自
PHP
4.2.0
起,不再需要用
srand()
或
mt_srand()
函数给随机数生成器播种,现已自动完成。
mt_rand定义和用法
mt_rand()
使用
Mersenne
Twister
算法返回随机整数。
语法
mt_rand(min,max)说明
如果没有提供可选参数
min
和
max,mt_rand()
返回
0
到
RAND_MAX
之间的伪随机数。例如想要
5
到
15(包括
5
和
15)之间的随机数,用
mt_rand(5,
15)。
很多老的
libc
的随机数发生器具有一些不确定和未知的特性而且很慢。PHP
的
rand()
函数默认使用
libc
随机数发生器。mt_rand()
函数是非正式用来替换它的。该函数用了
Mersenne
Twister
中已知的特性作为随机数发生器,它可以产生随机数值的平均速度比
libc
提供的
rand()
快四倍。
提示和注释
注释:自
PHP
4.2.0
起,不再需要用
srand()
或
mt_srand()
函数给随机数发生器播种,现在已自动完成。
注释:在
3.0.7
之前的版本中,max
的含义是
range
。要在这些版本中得到和上例相同
5
到
15
的随机数,简短的例子是
mt_rand
(5,
11)。
例子
在本例中,我们会返回一些随机数:
复制代码
代码如下:
<?php
echo(mt_rand());
echo(mt_rand());
echo(mt_rand(10,100));
?>
输出类似:
3150906288
513289678
35
㈡ PHP函数mysql_affected_rows()与mysql_num_rows()有什么区别
这两个函数功能完全不同:
mysql_affected_rows 取得前一次 MySQL 操作所影响的记录行数,操作是指INSERT、UPDATE、DELETE等,影响是指修改、变化的。如果函数失败,返回值是-1。此函数参数为连接ID,也可以不要参数(当前默认的连接)。
mysql_num_rows()返回结果集中行的数目,仅对 SELECT 语句有效。注意其参数是mysql_query返回的结果集ID。
㈢ php获取IP地址的三个函数区别
以下资料供参考:
1、REMOTE_ADDR 浏览当前页面的用户计算机的ip地址
2、HTTP_X_FORWARDED_FOR 浏览当前页面的用户计算机的网关
3.HTTP_CLIENT_IP 客户端的ip
在PHP 中使用 REMOTE_ADDR 来取得客户端的 IP 地址,但如果客户端是使用代理服务器来访问,那取到的就是代理服务器的 IP 地址,而不是真正的客户端 IP 地址。
要想透过代理服务器取得客户端的真实 IP 地址,就要使用 HTTP_X_FORWARDED_FOR 来读取。
不过要注意的事,并不是每个代理服务器都能用 HTTP_X_FORWARDED_FOR 来读取客户端的真实 IP,有些用此方法读取到的仍然是代理服务器的 IP。
还有一点需要注意的是:如果客户端没有通过代理服务器来访问,那么HTTP_X_FORWARDED_FOR 取到的值将是空的。
㈣ php echo()和print()、require()和include()函数区别说明
1.echo和print的区别
PHP中echo和print的功能基本相同(输出),但是两者之间还是有细微差别的。echo输出后没有返回值,但print有返回值,当其执行失败时返回flase。因此可以作为一个普通函数来使用,例如执行下面的代码后变量$r的值将为1。
$r
=
print
“Hello
World”;
这意味着print可用在一些复杂的表达式中,而echo则不行。但是,因为echo语句不要求返回任何数值,所已在代码中echo语句的运行效率要略微快于print语句。
2.include与require的区别
include()与require()的功能也基本相同(包含),但在用法上也有一些不同,include()是有条件包含函数,而require()则是无条件包含函数。例如在下面代码中,如果变量$a为真,则将包含文件a.php:
if($a){
include(“a.php”);
}
而require()则和include()不同,不管$a取何值,下面的代码将把文件a.php包含进文件里:
if($a){
require(“a.php”);
}
在错误处理方面,使用include语句,如果发生包含错误,程序将跳过include语句,虽然会显示错误信息但是程序还是会继续执行!但requre却会给你来个致命错误。
当然,从字面意思上我们也可以理解七分:requre是很强硬的请求、要求的意思。
3.require_once()和include_once()语句
题外话了,因为长的像,简单require_once()和include_once()语句分别对应于require()和include()语句。require_once()
和include_once()语句主要用于需要包含多个文件时,可以有效地避免把同一段代码包含进去而出现函数或变量重复定义的错误。
4.空字符串(”)和NULL的区别
PHP中空字符串和NULL都是以值为0存储的,但是他们的类型并不一样,你可以试一下echo
gettype(”);和echo
gettype(NULL);你会发现他们打印出来的分别是string和NULL,当然还有0也容易混淆,你可以试试echo
gettype(0);打印一下类型,会发现0的类型是integer(整型),可见字符串(”)、NULL和0是“等值”但不等类型。
5.isset和
empty的区别
从字面意思上我们就可以明白:empty是判断一个变量是否为“空”,而isset
则是判断一个变量是否已经设置。但是这里有一点绝对要注意起来:当一个变量值为0,empty
认为这个变量同等于空,即相当于没有设置。比如当我们检测$id
变量的时候,当$id=0
,用empty和isset来检测变量$id是否已经配置,两都将返回不同的值:empty
认为没有配置,isset
则能够取得
$id
的值,看下边例子:
$id=0;
emptyempty($id)?print
“我是空的”:print
“我是$id
.”;
//结果:我是空的
!isset($id)?print
“我是空的”:print
“我是$id
.”;//结果:我是0
6.==(等)和===(恒等)的区别
回顾上面第四条空字符串(“”)和NULL的区别,再来看一个例子:
”
==
NULL;
”
===
NULL;
运行之后你会发现第一个为true,而第二个则为false!可见==只是比较值是否相等,而===则不但比较值,还会比较类型,更为严格。