`
conan_holmes
  • 浏览: 9612 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
最近访客 更多访客>>
社区版块
存档分类
最新评论

九个PHP很有用的功能(3)

    博客分类:
  • PHP
阅读更多

来源:http://coolshell.cn/?p=2394

7. 序列化

你是否会把一个比较复杂的数据结构存到数据库或是文件中?你并不需要自己去写自己的算法。PHP早已为你做好了,其提供了两个函数:?serialize()unserialize() :

// 一个复杂的数组
$myvar = array(
	'hello',
	42,
	array(1,'two'),
	'apple'
);

// 序列化
$string = serialize($myvar);

echo $string;
/* 输出
a:4:{i:0;s:5:"hello";i:1;i:42;i:2;a:2:{i:0;i:1;i:1;s:3:"two";}i:3;s:5:"apple";}
*/

// 反序例化
$newvar = unserialize($string);

print_r($newvar);
/* 输出
Array
(
    [0] => hello
    [1] => 42
    [2] => Array
        (
            [0] => 1
            [1] => two
        )

    [3] => apple
)
*/

 这是PHP的原生函数,然而在今天JSON越来越流行,所以在PHP5.2以后,PHP开始支持JSON,你可以使用 json_encode() 和 json_decode() 函数

// a complex array
$myvar = array(
	'hello',
	42,
	array(1,'two'),
	'apple'
);

// convert to a string
$string = json_encode($myvar);

echo $string;
/* prints
["hello",42,[1,"two"],"apple"]
*/

// you can reproduce the original variable
$newvar = json_decode($string);

print_r($newvar);
/* prints
Array
(
    [0] => hello
    [1] => 42
    [2] => Array
        (
            [0] => 1
            [1] => two
        )

    [3] => apple
)
*/
 

这看起来更为紧凑一些了,而且还兼容于Javascript和其它语言。但是对于一些非常复杂的数据结构,可能会造成数据丢失。

8. 字符串压缩

当我们说到压缩,我们可能会想到文件压缩,其实,字符串也是可以压缩的。PHP提供了?gzcompress()gzuncompress() 函数:

$string =
"Lorem ipsum dolor sit amet, consectetur
adipiscing elit. Nunc ut elit id mi ultricies
adipiscing. Nulla facilisi. Praesent pulvinar,
sapien vel feugiat vestibulum, nulla dui pretium orci,
non ultricies elit lacus quis ante. Lorem ipsum dolor
sit amet, consectetur adipiscing elit. Aliquam
pretium ullamcorper urna quis iaculis. Etiam ac massa
sed turpis tempor luctus. Curabitur sed nibh eu elit
mollis congue. Praesent ipsum diam, consectetur vitae
ornare a, aliquam a nunc. In id magna pellentesque
tellus posuere adipiscing. Sed non mi metus, at lacinia
augue. Sed magna nisi, ornare in mollis in, mollis
sed nunc. Etiam at justo in leo congue mollis.
Nullam in neque eget metus hendrerit scelerisque
eu non enim. Ut malesuada lacus eu nulla bibendum
id euismod urna sodales. ";

$compressed = gzcompress($string);

echo "Original size: ". strlen($string)."\n";
/* 输出原始大小
Original size: 800
*/

echo "Compressed size: ". strlen($compressed)."\n";
/* 输出压缩后的大小
Compressed size: 418
*/

// 解压缩
$original = gzuncompress($compressed);
 

几乎有50% 压缩比率。同时,你还可以使用?gzencode()gzdecode() 函数来压缩,只不用其用了不同的压缩算法。

9. 注册停止 函数

有一个函数叫做?register_shutdown_function() ,可以让你在整个脚本停时前运行代码。让我们看下面的一个示例:

// capture the start time
$start_time = microtime(true);

// do some stuff
// ...

// display how long the script took
echo "execution took: ".
		(microtime(true) - $start_time).
		" seconds.";
 

上面这个示例只不过是用来计算某个函数运行的时间。然后,如果你在函数中间调用?exit() 函数,那么你的最后的代码将不会被运行到。并且,如果该脚本在浏览器终止(用户按停止按钮),其也无法被运行。

而当我们使用了register_shutdown_function()后,你的程序就算是在脚本被停止后也会被运行:

$start_time = microtime(true);

register_shutdown_function('my_shutdown');

// do some stuff
// ...

function my_shutdown() {
	global $start_time;

	echo "execution took: ".
			(microtime(true) - $start_time).
			" seconds.";
}
 
分享到:
评论

相关推荐

    9个必须知道的实用PHP函数和功能

    本文将详细介绍九个在实际开发中非常实用且经常被忽略的PHP函数和功能。 #### 1. 任意参数数目的函数 PHP 提供了一种灵活的方式来定义函数,使得函数可以接收任意数量的参数。这可以通过 `func_get_args()` 函数...

    PHP开发笔记系列(九)- 数组(三)

    在本篇"PHP开发笔记系列(九)- 数组(三)"中,我们将深入探讨PHP数组的高级用法,包括关联数组、多维数组以及数组函数的使用。 一、关联数组 关联数组是PHP数组的一种类型,其中的键和值之间存在关联关系,键可以...

    基于PHP的小说CMS管理系统源码.zip

    学习如何编写和使用API,对于扩展系统功能非常有用。 九、安全防护 任何Web系统都需要考虑安全问题,例如防止SQL注入、XSS攻击等。了解并实践基本的安全防护措施,可以使你的CMS系统更加稳固。 十、性能优化 对于...

    国外PHP动态第四期

    3. **结合使用Smarty和Zend Framework**:展示如何将这两个工具结合起来,构建一个功能完善的CMS系统,包括用户认证、内容管理等功能。 通过这种方式构建的CMS系统具有高度的灵活性和可扩展性,适用于多种应用场景...

    php教程MYSQL学习视频PHP程序员基础课程下16-29课.rar

    "18PHP第十八讲_PHP字符串的操作"和"19PHP第十九讲_PHP中的cookie与session"关注的是PHP的基础语法和用户交互。字符串操作在处理用户输入时必不可少,而Cookie和Session则是跟踪用户状态、实现会话管理的关键技术。 ...

    sql server driver for php 1.1 中文文档

    这个驱动程序提供了全面的功能,包括数据查询、事务处理、游标支持以及更多高级特性,以帮助开发者充分利用SQL Server的功能。 一、SQL Server与PHP的整合 在PHP环境中,SQL Server Driver for PHP 1.1 提供了桥梁...

    PHP开发笔记系列(九)- 数组(一)

    在PHP开发过程中,数组是一种非常重要的数据结构,它允许我们存储多个值在一个变量中,每个值都有一个唯一的键作为标识。本篇笔记将探讨PHP数组的基础知识,包括数组的创建、访问、遍历以及常见的操作。 1. **数组...

    php5中文英文文档

    PHP5是PHP(Hypertext Preprocessor)语言的第五个主要版本,它的出现极大地提升了PHP在Web开发领域的地位。PHP是一种开源的服务器端脚本语言,尤其适合于Web开发,可以嵌入到HTML中使用。PHP5在PHP4的基础上进行了...

    初学PHP--十天学会PHP

    这对于处理上传下载、日志记录等功能非常有用。 【第八天:会话与Cookie】 PHP的session和cookie机制用于跟踪用户状态。session存储在服务器端,安全性较高,而cookie存储在客户端,易受攻击。合理运用两者可以...

    PHP5中文手册

    PHP5是PHP语言的一个重要版本,它在PHP4的基础上进行了大量的改进和增强,为开发者提供了更强大、更稳定的功能。 **一、类型系统** 在PHP5中,引入了面向对象编程的关键特性,如类和对象。它支持数据类型的强类型...

    php设计模式高清版

    1. **标识**:这是一个简短的名字,用来快速地描述模式的功能。例如,“单例模式”或“工厂模式”。 2. **问题描述**:这部分详细说明了该模式所解决的问题是什么。例如,如何确保一个类只有一个实例,并提供一个...

    PHP4 编程与实例

    虽然现在PHP已经发展到更高的版本,但PHP4作为历史上的一个重要里程碑,其基础知识和编程理念对理解PHP5、PHP7等后续版本仍有很大帮助。本教材通过实例讲解,让读者在实践中掌握PHP4的核心概念和技术。 一、PHP4...

    Building Websites with PHP-Nuke

    - **PHP-Nuke能为您做什么**:PHP-Nuke是一个开源的内容管理系统,可以用来搭建具有新闻发布、论坛讨论、文件管理等功能的动态网站。它能够满足个人、组织或企业对于网站的基本需求,比如信息发布、用户管理和社区...

    php的一些基本语法

    ### PHP的一些基本语法知识点 #### 一、PHP简介 ...以上内容涵盖了PHP的一些基本语法,从PHP简介到文件处理等多个方面,对于初学者来说是非常有用的入门资料。掌握这些基础知识对于学习PHP编程至关重要。

    PHP设计模式指南中文版

    在PHP中,当需要在不同平台或环境下创建相关对象集合时,抽象工厂模式尤为有用。 四、建造者模式(Builder) 建造者模式将复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示。在PHP中,它常用于...

    非常有用的9个PHP代码片段

    在本文中,我们将深入探讨九个非常有用的PHP代码片段,这些片段可以在开发网站、应用程序或博客时极大地节省开发时间。这些代码片段包括创建数据URI、合并JavaScript和CSS文件以及在发送电子邮件时检查邮件是否被...

    php7.0的一些特性

    PHP 7.0 发布于2015年12月3日,作为PHP发展史上的一个重要里程碑,它带来了许多新特性和性能改进。相比之前的版本,PHP 7.0 在执行速度和内存消耗方面有了显著的提升,同时还引入了抽象语法树(AST)、更一致的64位...

    九宫格抽奖系统用过都说好.zip

    总的来说,这个九宫格抽奖系统集成了丰富的功能,既能满足日常运营需求,又具有高度的灵活性和可定制性。配合微信小程序和H5,它能无缝对接移动设备,为用户提供便捷的抽奖体验。在实际使用过程中,用户应根据提供的...

    PHP面试题及答案,另附学习心得

    ### PHP面试题及答案解析 #### 一、打印前一天的时间 **题目**: 使用PHP打印出前一天的时间,格式为...这些问题涵盖了PHP的基本概念、常用函数、数据库优化、模板引擎等多个方面,对准备PHP面试的人来说非常有用。

    九个你必须知道而且又很好用的php函数和特点

    以下九个PHP函数及其特点对于开发者来说是非常重要的: 1. **任意数目的参数**: PHP允许你定义接受任意数量参数的函数,这通过`func_get_args()`函数实现。例如,你可以创建一个没有固定参数列表的函数,`func_...

Global site tag (gtag.js) - Google Analytics