基于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")这种方式!!请问各个有什么可行的方法?或者上面我的方法有什么错误!!
请问怎么怎么再把数组元素传递给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")这种方式!!请问各个有什么可行的方法?或者上面我的方法有什么错误!!
$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);
$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);
setcookie("allrecord",base64_encode(json_encode($allrecord)));display.php$allrecord = json_decode(base64_decode($_COOKIE["allrecord"]));
setcookie("allrecord",base64_encode(json_encode($allrecord)));display.php$allrecord = json_decode(base64_decode($_COOKIE["allrecord"]),true);//加个true返回数组,默认返回一个对象
control 负责的是调度算法
当选择输出记录时,control.php从model.php中获取要输出的数据
include "$model";//$model 为对应的 model.php再把数据传递给display.php
include "$display"; //$display 为对应的 display.php也就是说 control.php 中并不出现任何实际的数据,而调度规则由规则文件:xml、ini、txt等提供
谢谢你!!我的意思也是这样做的!!
你看我返回一个二维数组后,想把数组传递给display的!!
上面说的方法好像没有可行的!!!
include "model.php";
include "display.php";只要 display.php 能识别 model.php 产生的数组就可以了
换句话说就是:
model.php 要产生 display.php 需要的数组(包括变量名)
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);
?>
对呀,我的model已经产生的数组,问题是怎么样把他传递给display!!
你总不能将 model.php 产生的数组交给浏览器再转交给 display.php 吧?include "model.php";
include "display.php";在 display.php 中就可以直接使用 model.php 产生的数组了