基于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")这种方式!!请问各个有什么可行的方法?或者上面我的方法有什么错误!!

解决方案 »

  1.   


    $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);
      

  2.   

    刚才发的有误 重新发下 $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);
      

  3.   

    control.php 
    setcookie("allrecord",base64_encode(json_encode($allrecord)));display.php$allrecord = json_decode(base64_decode($_COOKIE["allrecord"]));
      

  4.   

    control.php  
    setcookie("allrecord",base64_encode(json_encode($allrecord)));display.php$allrecord = json_decode(base64_decode($_COOKIE["allrecord"]),true);//加个true返回数组,默认返回一个对象
      

  5.   

    MVC可不是这样工作的!
    control 负责的是调度算法
    当选择输出记录时,control.php从model.php中获取要输出的数据
    include "$model";//$model 为对应的 model.php再把数据传递给display.php
    include "$display"; //$display 为对应的 display.php也就是说 control.php 中并不出现任何实际的数据,而调度规则由规则文件:xml、ini、txt等提供
      

  6.   


    谢谢你!!我的意思也是这样做的!!
    你看我返回一个二维数组后,想把数组传递给display的!!
    上面说的方法好像没有可行的!!!
      

  7.   

    去除条件判断,你的 control.php 实际执行的是
    include "model.php";
    include "display.php";只要 display.php 能识别 model.php 产生的数组就可以了
    换句话说就是:
    model.php 要产生 display.php 需要的数组(包括变量名)
      

  8.   

    可以用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);
    ?>
      

  9.   


    对呀,我的model已经产生的数组,问题是怎么样把他传递给display!!
      

  10.   

    我说你的思维很奇怪呀!
    你总不能将 model.php 产生的数组交给浏览器再转交给 display.php 吧?include "model.php";
    include "display.php";在 display.php 中就可以直接使用 model.php 产生的数组了