二维数组在不同页面传递

zfm1988 2010-07-25 08:03:10
基于MVC的一个小程序,control.php控制程序,当选择输出记录时,control.php从model.php中获取要输出的数组,数组元素是record对象,
请问怎么怎么再把数组元素传递给display.php 输出??

方法一:考虑用cookie 加serialize,但是如果记录时一条的话,成功!
如果有很多条就失败!!
代码如下 :control.php 中
$i=0;
foreach($allrecord as $value){
$str=serialize($value);
setcookie("record_info[$i]",$str);
$i++;
}
display.php中
$j=0;
if(isset($_COOKIE['record_info'])){
foreach ($_COOKIE['record_info'] as $value) {
$record[$j]=unserialize($value);
}
}
但是测试$record数组里面的根本就是record对象,且程序出错!!!

方法二:序列化后用header或者url参数的形式,都只能输出一条变量!!
header("Location:display.php?bl=$str")这种方式!!

请问各个有什么可行的方法?或者上面我的方法有什么错误!!
...全文
225 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuzuning 2010-07-27
  • 打赏
  • 举报
回复
我说你的思维很奇怪呀!
你总不能将 model.php 产生的数组交给浏览器再转交给 display.php 吧?

include "model.php";
include "display.php";

在 display.php 中就可以直接使用 model.php 产生的数组了
zfm1988 2010-07-27
  • 打赏
  • 举报
回复
谢谢大家,我试试!!
zfm1988 2010-07-27
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 xuzuning 的回复:]
去除条件判断,你的 control.php 实际执行的是
include "model.php";
include "display.php";

只要 display.php 能识别 model.php 产生的数组就可以了
换句话说就是:
model.php 要产生 display.php 需要的数组(包括变量名)
[/Quote]

对呀,我的model已经产生的数组,问题是怎么样把他传递给display!!
zfm1988 2010-07-27
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 xuzuning 的回复:]

我说你的思维很奇怪呀!
你总不能将 model.php 产生的数组交给浏览器再转交给 display.php 吧?

include "model.php";
include "display.php";

在 display.php 中就可以直接使用 model.php 产生的数组了
[/Quote]


谢谢,你的方法是我一开始就用的方法,这个程序刚开始已经做出来了,我只是想尝试下别的方法,!!
即怎么在不同页面传递二维数组!!!

谢谢你们!!
zfm1988 2010-07-26
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 xuzuning 的回复:]
MVC可不是这样工作的!
control 负责的是调度算法
当选择输出记录时,control.php从model.php中获取要输出的数据
include "$model";//$model 为对应的 model.php

再把数据传递给display.php
include "$display"; //$display 为对应的 display.php

也就是说 control……
[/Quote]

谢谢你!!我的意思也是这样做的!!
你看我返回一个二维数组后,想把数组传递给display的!!
上面说的方法好像没有可行的!!!
xuzuning 2010-07-26
  • 打赏
  • 举报
回复
MVC可不是这样工作的!
control 负责的是调度算法
当选择输出记录时,control.php从model.php中获取要输出的数据
include "$model";//$model 为对应的 model.php

再把数据传递给display.php
include "$display"; //$display 为对应的 display.php

也就是说 control.php 中并不出现任何实际的数据,而调度规则由规则文件:xml、ini、txt等提供
funfun5433 2010-07-26
  • 打赏
  • 举报
回复
可以用json传递数组
test.php


<?php
$arr=array();
$arr[0]=array("funfun1","funfun2");
$arr[1]=array("funfun3","funfun4");
//print_r($arr);
$jsonstr = json_encode($arr);

$jsonstr=str_replace("\"","'",$jsonstr);
echo $jsonstr;



?>
<html>
<head>
</head>
<body>
<a href="./nba.php?jsonstr=<?php echo $jsonstr; ?>" >fffff</a>

</body>
</html>



nba.php


<?php

$str=$_GET["jsonstr"];
echo $str;
$jsonstr=str_replace("'","\"",$str);
echo $jsonstr;
$arr=json_decode($jsonstr);

print_r($arr);
?>
xuzuning 2010-07-26
  • 打赏
  • 举报
回复
去除条件判断,你的 control.php 实际执行的是
include "model.php";
include "display.php";

只要 display.php 能识别 model.php 产生的数组就可以了
换句话说就是:
model.php 要产生 display.php 需要的数组(包括变量名)
happy664618843 2010-07-26
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 xuzuning 的回复:]

MVC可不是这样工作的!
control 负责的是调度算法
当选择输出记录时,control.php从model.php中获取要输出的数据
include "$model";//$model 为对应的 model.php

再把数据传递给display.php
include "$display"; //$display 为对应的 display.php

也就是说 contro……
[/Quote]
这个好
Dleno 2010-07-25
  • 打赏
  • 举报
回复
control.php
setcookie("allrecord",base64_encode(json_encode($allrecord)));

display.php

$allrecord = json_decode(base64_decode($_COOKIE["allrecord"]),true);//加个true返回数组,默认返回一个对象
Dleno 2010-07-25
  • 打赏
  • 举报
回复
control.php
setcookie("allrecord",base64_encode(json_encode($allrecord)));

display.php

$allrecord = json_decode(base64_decode($_COOKIE["allrecord"]));
餅餅 2010-07-25
  • 打赏
  • 举报
回复
刚才发的有误 重新发下

$allrecord = array('test', 'hello', 'wow');
$i=0;
foreach($allrecord as $value)
{
$str=serialize($value);
setcookie("record_info[$i]",$str);
$i++;
}
$j=0;
if(isset($_COOKIE['record_info']))
{
foreach ($_COOKIE['record_info'] as $value)
{
if (!is_array($value))
{
$record[$j]=unserialize($value);
$j++;
}
}
}
var_dump($record);
餅餅 2010-07-25
  • 打赏
  • 举报
回复

$allrecord = array('test', 'hello', 'wow');
$i=0;
foreach($allrecord as $value)
{
$str=serialize($value);
setcookie("record_info[][$i]",$str);
$i++;
}
$j=0;
if(isset($_COOKIE['record_info']))
{
foreach ($_COOKIE['record_info'] as $value)
{
if (!is_array($value))
{
$record[$j]=unserialize($value);
$j++;
}
}
}
var_dump($record);

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧