1-6作业:留言板,数组经过序列化后他还是数组吗?我看后面还有遍历数组的过程
<?php
date_default_timezone_set("PRC");
header('content_type:text/html;charset=utf-8');
//msg.txt是提交后的信息,是序列化后的
$filename="msg.txt";
$msgs=[];
//检测文件是否存在
if (file_exists($filename)){
//读取文件中的内容
$string=file_get_contents($filename);
if (strlen($string)>0){
$msgs=unserialize($string);
}
}
//检测用户是否点击了提交按钮
if (isset($_POST['pubMsg'])){
$username=$_POST['username'];
$title=strip_tags($_POST['title']);
$content=strip_tags($_POST['content']);
$time=time();
//将其组成关联数组
$data=compact('username','title','content','time');
array_push($msgs,$data);
$msgs=serialize($msgs);
if(file_put_contents($filename,$msgs)){
echo "<script>alert('留言成功!');location.href='liuyanban.php';</script>";
}else{
echo "<script>alert('留言失败!');location.href='liuyanban.php';</script>";
}
}
/*
$msgs=[
[...],
[...]
];
file_get_content($filename):得到文件中的内容,返回的是字符串
file_put_contents($filename,$data):向指定文件写内容;如果文件不存在会创建
serialize($str):序列化字符串
unserialize($str):反序列化字符串
*/
?>
<!DOCTYPE HTML>
<html lang="en">
<head>
<script type="text/javascript" src="http://www.francescomalagrino.com/BootstrapPageGenerator/3/js/jquery-2.0.0.min.js"></script>
<script type="text/javascript" src="http://www.francescomalagrino.com/BootstrapPageGenerator/3/js/jquery-ui"></script>
<link href="http://www.francescomalagrino.com/BootstrapPageGenerator/3/css/bootstrap-combined.min.css" rel="stylesheet" media="screen">
<script type="text/javascript" src="http://www.francescomalagrino.com/BootstrapPageGenerator/3/js/bootstrap.min.js"></script>
</head>
<body>
<div class="container-fluid">
<div class="row-fluid">
<div class="span12">
<div class="page-header">
<h1>
IMOOC-v1.0
</h1>
</div>
<div class="hero-unit">
<h1>
Hello, world!
</h1>
<p>
这是一个可视化布局模板, 你可以点击模板里的文字进行修改, 也可以通过点击弹出的编辑框进行富文本修改. 拖动区块能实现排序.
</p>
<p>
<a rel="nofollow" class="btn btn-primary btn-large" href="#">参看更多 »</a>
</p>
</div>
<?php
if (is_array($msgs)&&count($msgs)>0):
?>
<table class="table">
<thead>
<tr>
<th>
编号
</th>
<th>
用户名
</th>
<th>
标题
</th>
<th>
时间
</th>
<th>
内容
</th>
<th>
操作
</th>
</tr>
</thead>
<tbody>
<?php
$i=1;
foreach ( $msgs as $v):
?>
<tr class="success">
<td><?php echo $i++; ?></td>
<td><?php echo $v['username'];?></td>
<td><?php echo $v['title'];?></td>
<td><?php echo date('Y-m-d H:i:s',$v['time']);?></td>
<td><?php echo $v['content'];?></td>
<td><a href="edit.php" name="edit">编辑</a></td>
<td><a href="" name="delete">删除</a></td>
</tr>
<?php
endforeach;
?>
</tbody>
</table>
<?php
endif;
?>
<button><a href="add.php">我要留言</a></button>
</div>
</div>
</div>
</body>
</html>
正在回答
您好,序列化是在if判断中的,只有当点击按钮之后才会序列化,否则是不执行序列化的,所以序列化并不影响foreach循环。祝学习愉快!
- 参与学习 人
- 提交作业 626 份
- 解答问题 4930 个
想要学好Web后端开发的中流砥柱语言,本阶段为你轻松铺就扎实的基础,从前端网页布局的搭建到后台PHP开发,助你从零基础到掌握主流开发语言。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星