当前位置: 编程技术>php
本页文章导读:
▪深入mysql_fetch_row()与mysql_fetch_array()的区别详解
这两个函数,返回的都是一个数组,区别就是第一个函数返回的数组是只包含值,我们只能$row[0],$row[1],这样以数组下标来读取数据,而mysql_fetch_array()返回的数组既包含第一种,也包含键值.........
▪浅谈php serialize()与unserialize()的用法
serialize()和unserialize()在php手册上的解释是:serialize — Generates a storable representation of a valueserialize — 产生一个可存储的值的表示unserialize — Creates a PHP value from a stored representationunserialize — 从.........
▪基于php 随机数的深入理解
php mt_srand 播下一个更好的随机数发生器种子mt_srand(PHP 3 >= 3.0.6, PHP 4, PHP 5)mt_srand -- 播下一个更好的随机数发生器种子说明 代码如下:void mt_srand ( int seed ) 用 seed 来给随机数发生器播种。从 P.........
[1]深入mysql_fetch_row()与mysql_fetch_array()的区别详解
来源: 互联网 发布时间: 2013-11-30
这两个函数,返回的都是一个数组,区别就是第一个函数返回的数组是只包含值,我们只能$row[0],
$row[1],这样以数组下标来读取数据,而mysql_fetch_array()返回的数组既包含第一种,也包含键值
对的形式,我们可以这样读取数据,(假如数据库的字段是 username,passwd):
$row['username'], $row['passwd']
而且,如果用($row as $kay => $value)来操作的话,还以直接取得数据库的字段名称。
更主要的是mysqli是php5提供的新函数库,(i)表示改进,其执行速度更快.
例如:
Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--><?php
//连接到本地mysql数据库,选择test为操作库
$mysqli = mysqli_connect("localhost", "root", "","test", 3306);
//用mysql_query函数从user表里读取数据
$result = mysqli_query($mysqli, "SELECT * FROM userinfo");
while($row = mysqli_fetch_array($result))//通过循环读取数据内容
{
?>
<tr>
<td align="center" height="19"><?php echo $row["ID"]?></td>
<td align="center"><?php echo $row["Name"]?></td>
<td align="center"><?php echo $row["Detail"]?></td>
</tr>
<?php
}
//关闭对数据库的连接
mysqli_free_result($result);
mysqli_close($mysqli);*/
?>
$row[1],这样以数组下标来读取数据,而mysql_fetch_array()返回的数组既包含第一种,也包含键值
对的形式,我们可以这样读取数据,(假如数据库的字段是 username,passwd):
$row['username'], $row['passwd']
而且,如果用($row as $kay => $value)来操作的话,还以直接取得数据库的字段名称。
更主要的是mysqli是php5提供的新函数库,(i)表示改进,其执行速度更快.
例如:
代码如下:
Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--><?php
//连接到本地mysql数据库,选择test为操作库
$mysqli = mysqli_connect("localhost", "root", "","test", 3306);
//用mysql_query函数从user表里读取数据
$result = mysqli_query($mysqli, "SELECT * FROM userinfo");
while($row = mysqli_fetch_array($result))//通过循环读取数据内容
{
?>
<tr>
<td align="center" height="19"><?php echo $row["ID"]?></td>
<td align="center"><?php echo $row["Name"]?></td>
<td align="center"><?php echo $row["Detail"]?></td>
</tr>
<?php
}
//关闭对数据库的连接
mysqli_free_result($result);
mysqli_close($mysqli);*/
?>
[2]浅谈php serialize()与unserialize()的用法
来源: 互联网 发布时间: 2013-11-30
serialize()和unserialize()在php手册上的解释是:
serialize — Generates a storable representation of a value
serialize — 产生一个可存储的值的表示
unserialize — Creates a PHP value from a stored representation
unserialize — 从已存储的表示中创建 PHP 的值
很显然,"a stored representation"的解释翻译成了一个可存储的值后依然很让人非常费解它的意思。
如果语言已经无法表述清楚,那么我们可以以一个具体的PHP的例子来学习这两个函数的用途
Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--><?php
//声明一个类
class dog {
var $name;
var $age;
var $owner;
function dog($in_name="unnamed",$in_age="0",$in_owner="unknown") {
$this->name = $in_name;
$this->age = $in_age;
$this->owner = $in_owner;
}
function getage() {
return ($this->age * 365);
}
function getowner() {
return ($this->owner);
}
function getname() {
return ($this->name);
}
}
//实例化这个类
$ourfirstdog = new dog("Rover",12,"Lisa and Graham");
//用serialize函数将这个实例转化为一个序列化的字符串
$dogdisc = serialize($ourfirstdog);
print $dogdisc; //$ourfirstdog 已经序列化为字符串 O:3:"dog":3:{s:4:"name";s:5:"Rover";s:3:"age";i:12;s:5:"owner";s:15:"Lisa and Graham";}
print '<BR>';
/*
-----------------------------------------------------------------------
在这里你可以将字符串 $dogdisc 存储到任何地方如 session,cookie,数据库,php文件
-----------------------------------------------------------------------
*/
//我们在此注销这个类
unset($ourfirstdog);
/* 还原操作 */
/*
-----------------------------------------------------------------------
在这里将字符串 $dogdisc 从你存储的地方读出来如 session,cookie,数据库,php文件
-----------------------------------------------------------------------
*/
//我们在这里用 unserialize() 还原已经序列化的对象
$pet = unserialize($dogdisc); //此时的 $pet 已经是前面的 $ourfirstdog 对象了
//获得年龄和名字属性
$old = $pet->getage();
$name = $pet->getname();
//这个类此时无需实例化可以继续使用,而且属性和值都是保持在序列化之前的状态
print "Our first dog is called $name and is $old days old<br>";
print '<BR>';
?>
例子中的对象我们还可以换为数组等其他类型,效果都是一样的!
其实serialize()就是将PHP中的变量如对象(object),数组(array)等等的值序列化为字符串后存储起来.序列化的字符串我们可以存储在其他地方如数据库、Session、Cookie等,序列化的操作并不会丢失这些值的类型和结构。这样这些变量的数据就可以在PHP页面、甚至是不同PHP程序间传递了。
而unserialize()就是把序列化的字符串转换回PHP的值。
这里再引用一段PHP手册上的说明,看了上面的例子,应该很容易明白下面这些话的意思了
想要将已序列化的字符串变回 PHP 的值,可使用 unserialize()。serialize() 可处理除了 resource 之外的任何类型。甚至可以 serialize() 那些包含了指向其自身引用的数组。你正 serialize() 的数组/对象中的引用也将被存储。
当序列化对象时,PHP 将试图在序列动作之前调用该对象的成员函数 __sleep()。这样就允许对象在被序列化之前做任何清除操作。类似的,当使用 unserialize() 恢复对象时, 将调用 __wakeup() 成员函数
unserialize() 对单一的已序列化的变量进行操作,将其转换回 PHP 的值。返回的是转换之后的值,可为 integer、float、string、array 或 object。如果传递的字符串不可解序列化,则返回 FALSE。
serialize — Generates a storable representation of a value
serialize — 产生一个可存储的值的表示
unserialize — Creates a PHP value from a stored representation
unserialize — 从已存储的表示中创建 PHP 的值
很显然,"a stored representation"的解释翻译成了一个可存储的值后依然很让人非常费解它的意思。
如果语言已经无法表述清楚,那么我们可以以一个具体的PHP的例子来学习这两个函数的用途
代码如下:
Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--><?php
//声明一个类
class dog {
var $name;
var $age;
var $owner;
function dog($in_name="unnamed",$in_age="0",$in_owner="unknown") {
$this->name = $in_name;
$this->age = $in_age;
$this->owner = $in_owner;
}
function getage() {
return ($this->age * 365);
}
function getowner() {
return ($this->owner);
}
function getname() {
return ($this->name);
}
}
//实例化这个类
$ourfirstdog = new dog("Rover",12,"Lisa and Graham");
//用serialize函数将这个实例转化为一个序列化的字符串
$dogdisc = serialize($ourfirstdog);
print $dogdisc; //$ourfirstdog 已经序列化为字符串 O:3:"dog":3:{s:4:"name";s:5:"Rover";s:3:"age";i:12;s:5:"owner";s:15:"Lisa and Graham";}
print '<BR>';
/*
-----------------------------------------------------------------------
在这里你可以将字符串 $dogdisc 存储到任何地方如 session,cookie,数据库,php文件
-----------------------------------------------------------------------
*/
//我们在此注销这个类
unset($ourfirstdog);
/* 还原操作 */
/*
-----------------------------------------------------------------------
在这里将字符串 $dogdisc 从你存储的地方读出来如 session,cookie,数据库,php文件
-----------------------------------------------------------------------
*/
//我们在这里用 unserialize() 还原已经序列化的对象
$pet = unserialize($dogdisc); //此时的 $pet 已经是前面的 $ourfirstdog 对象了
//获得年龄和名字属性
$old = $pet->getage();
$name = $pet->getname();
//这个类此时无需实例化可以继续使用,而且属性和值都是保持在序列化之前的状态
print "Our first dog is called $name and is $old days old<br>";
print '<BR>';
?>
例子中的对象我们还可以换为数组等其他类型,效果都是一样的!
其实serialize()就是将PHP中的变量如对象(object),数组(array)等等的值序列化为字符串后存储起来.序列化的字符串我们可以存储在其他地方如数据库、Session、Cookie等,序列化的操作并不会丢失这些值的类型和结构。这样这些变量的数据就可以在PHP页面、甚至是不同PHP程序间传递了。
而unserialize()就是把序列化的字符串转换回PHP的值。
这里再引用一段PHP手册上的说明,看了上面的例子,应该很容易明白下面这些话的意思了
想要将已序列化的字符串变回 PHP 的值,可使用 unserialize()。serialize() 可处理除了 resource 之外的任何类型。甚至可以 serialize() 那些包含了指向其自身引用的数组。你正 serialize() 的数组/对象中的引用也将被存储。
当序列化对象时,PHP 将试图在序列动作之前调用该对象的成员函数 __sleep()。这样就允许对象在被序列化之前做任何清除操作。类似的,当使用 unserialize() 恢复对象时, 将调用 __wakeup() 成员函数
unserialize() 对单一的已序列化的变量进行操作,将其转换回 PHP 的值。返回的是转换之后的值,可为 integer、float、string、array 或 object。如果传递的字符串不可解序列化,则返回 FALSE。
[3]基于php 随机数的深入理解
来源: 互联网 发布时间: 2013-11-30
php mt_srand 播下一个更好的随机数发生器种子
mt_srand
(PHP 3 >= 3.0.6, PHP 4, PHP 5)
mt_srand -- 播下一个更好的随机数发生器种子
说明
void mt_srand ( int seed )
用 seed 来给随机数发生器播种。从 PHP 4.2.0 版开始,seed 参数变为可选项,当该项为空时,会被设为随时数。
例子 1. mt_srand() 范例
Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--><?php
// seed with microseconds
function make_seed()
{
list($usec, $sec) = explode(' ', microtime());
return (float) $sec + ((float) $usec * 100000);
}
mt_srand(make_seed());
$randval = mt_rand();
?>
注: 自 PHP 4.2.0 起,不再需要用 srand() 或 mt_srand() 函数给随机数发生器播种,现已自动完成。
参见 mt_rand(),mt_getrandmax() 和 srand()。
PHP 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)。
例子
在本例中,我们会返回一些随机数:
<?phpecho(mt_rand());
echo(mt_rand());
echo(mt_rand(10,100));
?>
输出类似:
3150906288
513289678
35
注意:上面这个函数给出的随机整数,数字之外的字符是不会出来的,若想其他字符产生,就需另自定义方法,如下所示:
<?php
/*
* $length:随机数字符串的长度
* $type:产生随机数的类型
* */
function random($length, $type = "") {
$chars = !$type ? "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz" : "0123456789abcdef";
$max = strlen($chars) - 1;
mt_srand((double)microtime() * 1000000);
for($i = 0; $i < $length; $i++) {
$string .= $chars[mt_rand(0, $max)];
}
return $string;
}
$var=random(32,'haha');
echo($var);
?>
输出:
fe61e294e5f46437cb3a92b92643ead6
mt_srand
(PHP 3 >= 3.0.6, PHP 4, PHP 5)
mt_srand -- 播下一个更好的随机数发生器种子
说明
代码如下:
void mt_srand ( int seed )
用 seed 来给随机数发生器播种。从 PHP 4.2.0 版开始,seed 参数变为可选项,当该项为空时,会被设为随时数。
例子 1. mt_srand() 范例
代码如下:
Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--><?php
// seed with microseconds
function make_seed()
{
list($usec, $sec) = explode(' ', microtime());
return (float) $sec + ((float) $usec * 100000);
}
mt_srand(make_seed());
$randval = mt_rand();
?>
注: 自 PHP 4.2.0 起,不再需要用 srand() 或 mt_srand() 函数给随机数发生器播种,现已自动完成。
参见 mt_rand(),mt_getrandmax() 和 srand()。
PHP 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)。
例子
在本例中,我们会返回一些随机数:
代码如下:
<?phpecho(mt_rand());
echo(mt_rand());
echo(mt_rand(10,100));
?>
输出类似:
3150906288
513289678
35
注意:上面这个函数给出的随机整数,数字之外的字符是不会出来的,若想其他字符产生,就需另自定义方法,如下所示:
代码如下:
<?php
/*
* $length:随机数字符串的长度
* $type:产生随机数的类型
* */
function random($length, $type = "") {
$chars = !$type ? "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz" : "0123456789abcdef";
$max = strlen($chars) - 1;
mt_srand((double)microtime() * 1000000);
for($i = 0; $i < $length; $i++) {
$string .= $chars[mt_rand(0, $max)];
}
return $string;
}
$var=random(32,'haha');
echo($var);
?>
输出:
fe61e294e5f46437cb3a92b92643ead6
最新技术文章: