专注于WEB技术的IT博客

PHP序列化数组开发相册模块的一个想法

时间:2012-10-13分类: php浏览:5378
分享到:

近期正在开发一个相册功能模块,过程思路大概是:把批量上传的图片数据生成数组,然后再把数组存到数据表的某个字段里,读取图片时遍历数组以浏览多张图片。


但是,数组是不能直接读写到数据库的,因此需要将数组转化字符串,才能存入数据库。而从数据库取出来的字符串需要还原为数组才能进行遍历读取。先前我以为这样相互转化的过程需要写一个很复杂的函数来处理,后来证明我是多滤了。记得PHP有个内置函数serialize()可以处理对象串行化,翻了一下php手册,果然serialize()和unserialize()也可以对数组序列化!现在来看一下它的用法:
      
 serialize()-- 返回字符串,此字符串包含了表示 value 的字节流,可以存储于任何地方。这有利于存储或传递 PHP 的值,同时不丢失其类型和结构。


    unserialize()-- 对单一的已序列化的变量进行操作,将其转换回 PHP 的值。返回的是转换之后的值,可为 integer、float、string、array 或 object。如果传递的字符串不可解序列化,则返回 FALSE。

     

    下面是我的调试记录:

<?php
$picarray=array(
   '0' => '1,jpg',
   '1' => '2,jpg',
   '2' => '3,jpg'
   );
$picarray=serialize($picarray);//序列化数组,存入数据库

print_r($picarray);

echo gettype($picarray)."<br>";//判断变量类型

$picarray=unserialize($picarray);//从数据库取出,反序列化数组

print_r($picarray);

echo gettype($picarray);
?>


    输出结果:
a:3:{i:0;s:5:"1,jpg";i:1;s:5:"2,jpg";i:2;s:5:"3,jpg";}string
Array ( [0] => 1,jpg [1] => 2,jpg [2] => 3,jpg ) array

     

     呵呵,我相信很多程序员都做过的傻事--自己绞尽脑汁写出了一个自我感觉良好的函数,正在享受自己的成就时,突然发现它可以用语言手册里的一个内置函数来实现这个功能!这都是对语言手册不熟悉惹的祸。
 砍柴不误磨刀功,很有道理!

     


     

猜你喜欢
php面向对象之__autoload()
php面向对象之__call处理错误调用
php面向对象之__toString()
PHP面向对象之const常量修饰符
php面向对象之final的应用
php面向对象之克隆对象
PHP面向对象之对象和引用
php面向对象之类的静态成员
php面向对象之子类中重载父类的方法
php面向对象的访问类型控制
标签 : php
除非注明,本文首发网志博客,欢迎转载!转载请注明本文地址:http://w3note.com/web/29.html,谢谢。
  • 评论
  • 赞助本站