动网论坛,站长建站首选,国内使用量最多的论坛软件 动网论坛官方技术讨论区 站长工具 申请属于您自己的免费论坛
首页 | 新闻资讯 | 网站运营 | 网络编程 | 数据库 | 服务器 | 网页设计 | 图像媒体 | 网络应用 | 搜索优化 | 资源下载 | 动网主机 | DVBOX
    本站内  互联网 ASP论坛  ASP.Net论坛  PHP论坛
   PHP → 阅读文章

 用PHP模拟C的数据结构

作者来源: 
阅读 1420 人次 , 2006-4-18 15:47:00 

 

C中对与一个固定的数据结构存储很方便。
struct USERINFO
{
int ID;
char USERNAME[10];
char PASSWORD[15];
char MAIL[10];
}typedef USERINFO;
USERINFO UserInfo;
ZeroMemory(&UserInfo,sizeof(UserInfo));
UserInfo.ID = 1;
strcat(UserInfo.USERNAME,"wan_dou");
strcat(UserInfo.PASSWORD,"password");
strcat(UserInfo.MAIL,"wan_dou@citiz.net");
FILE *fp = fopen("c:/x.txt","w");
fwrite(&UserInfo,sizeof(UserInfo),1,fp);
fclose(fp);
就将保存一个用户的信息。如果一个变量或数组的输入低于给他的输入就自动补空,所以取出更方便
fread(&UserInfo,sizeof(UserInfo),1,fp);
PHP好象没有STRUCT的支持,而CLASS用相同的操作的话一定是错误的。
所以只有自己来模拟一个结构了。
下面就是一个不太成熟的结构了,最讨厌的就是不能支持变动长度的数据。

<?
define("UserInfoPath","data/UserInfo");

class USERINFO
{
var $UserInfoStruct = Array
(
"UserName" => 10 ,//
定义结构
"PassWord" => 15 ,//
如果是 int ,float,double 可以参考数据库中的定义或自行设定
"Mail" => 50 ,//50:
字符需要的长度,MAIL是结构名称
);
var $UserName;//
真正存放内容的变量在这里。
var $PassWord;//
var $Mail;//
,必须和结构定义的描述相同。

function checkValue($str,$n)//
给定一个变量,和规定变量长度变量
{
while(strlen($str)<$n)//
少补
{
$str.=' ';
}
if( strlen($str) > $n)//
多退
$str = substr($str,0,$n);

}
function SaveToFile($filename)//
保存为一个文件
{
$fp = fopen($filename,"w");//
打开
for(reset($this->UserInfoStruct);$i=key($this->UserInfoStruct);next($this->UserInfoStruct))
{
$this->checkValue(&$this->$i,$this->UserInfoStruct[$i]);//
调用函数,被检查变量提供指针地址
echo $this->$i;//
我自己放的调试,可删除。
fputs($fp,$this->$i,$this->UserInfoStruct[$i]);//
写入 $this->$i是一个指相变量的变量,如 $this->UserName,第三个参数可省,但如果加更可靠的保存指定长度的变量。;

}
fclose($fp);//
关闭
}
function LoadFromFile($filename)//
从一个文件中读取
{
$fp = fopen($filename,"r");//
打开
for(reset($this->UserInfoStruct);$i=key($this->UserInfoStruct);next($this->UserInfoStruct))
{
$this->$i = fgets($fp,$this->UserInfoStruct[$i]);//
读出指定长度的字符到变量
echo $this->$i;//
自己调试
}
fclose($fp);//
关闭
}

};
/*
$UserInfo = new USERINFO;//

$UserInfo -> UserName ="wan_dou";
$UserInfo -> PassWord ="1981627";
$UserInfo -> Mail ="wan_dou@sina.com.cn";
$UserInfo -> SaveToFile("c:/1.txt");

$UserInfoLoad = new USERINFO;//

$UserInfoLoad->LoadFromFile("c:/1.txt");
echo $UserInfoLoad->UserName;
*/
?>

  
 
 收藏本文  打印本文  论坛讨论  关闭窗口
· 上一篇:PHP3 'safe_mode' 失效漏洞
· 下一篇:据库连接
· PHP中用户身份认证实现二法(1)
· 如何正确统计中文字数
· PHP教程.经验技巧(上)
· 用PHP制作的意见反馈表
· 贯彻PHP中的MVC之控制器篇


关于本站 | 联系我们 | 业务合作 | 客户案例 | 诚聘英才 | 广告合作 | 收藏本站
海口动网先锋网络科技有限公司版权所有
Copyright © 2000 - 2006 Cndw.Com
中华人民共和国电信与信息服务业务经营许可证编号 琼 ICP 020077