将数组从一个页面传递到另一个页面

时间:2012-12-10 23:54:43

标签: php

我有一个包含一些值的数组,比如说

arr['one'] = "one value here";
arr['two'] = "second value here";
arr['three'] = "third value here";

我这个值在页面home.php中,在页面的末尾它被重定向到page detail.php 现在我想在直接发生时将这个数组从home.php页面传递给detail.php。

我可以使用post和get方法以多少方式发送此值。如果可能的话,请告诉我如何在detail.php页面中接收和打印这些值。

非常感谢每种类型的一个例子。

4 个答案:

答案 0 :(得分:3)

最简单的方法是使用会话将数组从一个页面存储到另一个页面:

session_start();
$_SESSION['array_to_save'] = $arr;

有关会话的更多信息:http://php.net/manual/en/function.session-start.php

如果您不想使用会话,可以在第一页中执行类似的操作

$serialized =htmlspecialchars(serialize($arr));
echo "<input type=\"hidden\" name=\"ArrayData\" value=\"$serialized\"/>";

并在另一个中检索数组数据,如下所示:

$value = unserialize($_POST['ArrayData']);

此处找到解决方案:https://stackoverflow.com/a/3638962/1606729

答案 1 :(得分:2)

如果您不想使用会话,则可以将该页面包含在另一个文件中。

<强> file1.php

<php
    $arr = array();
    $arr['one'] = "one value here";
    $arr['two'] = "second value here";
    $arr['three'] = "third value here";
?>

<强> file2.php

<?php

    include "file1.php";

    print_r($arr);
?>

如果数组是动态创建的,并且您希望通过GET或POST传递它,则应在服务器端形成URL并将用户重定向到HTTP URL页面而不是php文件。

类似于:

<强> file1.php

<php
    $arr = array();
    $arr['one'] = "one value here";
    $arr['two'] = "second value here";
    $arr['three'] = "third value here";

    $redirect = "http://yoursite.com/file2.php?".http_build_query($arr);
    header( "Location: $redirect" );

?>

<强> file2.php

<?php

    $params = $_GET;

    print_r($params['one']);
    print_r($params['two']);
    print_r($params['three']);
?>

答案 2 :(得分:2)

home.php文件

session_start();
if(!empty($arr)){
    $_SESSION['value'] = $arr;
     redirect_to("../detail.php");
}

detail.php

session_start();                    
if(isset($_SESSION['value'])){                           
    foreach ($_SESSION['value'] as $arr) {
        echo $arr . "<br />";
        unset($_SESSION['value']);
    }
}

答案 3 :(得分:0)

您也可以通过查询参数传递值。

header('Location: detail.php?' . http_build_query($arr, null, '&'));

你可以在detail.php中获取这样的数组:

// your values are in the $_GET array
echo $_GET['one'];  // echoes "one value here" by your example

请注意,如果您通过GET或POST(隐藏输入字段)传递值,则用户可以轻松更改这些值。