首页 > 开发 > PHP > 正文

用PHP模拟C的数据结构

2024-05-04 23:02:06
字体:
来源:转载
供稿:网友

 

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,"[email protected]");
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 ="[email protected]";
$userinfo -> savetofile("c:/1.txt");

$userinfoload = new userinfo;//

$userinfoload->loadfromfile("c:/1.txt");
echo $userinfoload->username;
*/
?>


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表