将php中的数组从post更改为会话变量

时间:2011-12-11 06:05:14

标签: php arrays forms post

几天前,我发布了here并对如何处理数组做了很好的回应。 这正是我所需要的

foreach ($_POST['name'] as $key=>$name) {
  echo "Name: $name  Age: {$_POST['age'][$key]}";
}

问题是,我需要它不要打印但要坚持。我正在制作会话变量,如$_SESSION["name"]= "some name";

我想知道如何将POST数组从上面转储到$ SESSION [Array]; 最终,能够在任何页面上随意重新转储所有数据。我需要访问数组中的$ name和$ age,我希望它们能够关联。 在java中我会做

String[][] something = new String[10][2]; //10 is size and 2 allows for name at index 0 and age at index 1. 

要记住一些事情。未设置POST数组的大小。它们可能是从0输入到100的任何地方。

除了保存数组外,您能否告诉我如何访问它。我用java,所以php数组对我来说是新的。

修改

尝试johnps后

我的页面看起来像这样

foreach ($_POST['name'] as $key=>$name) {
  echo "Name: $name  Age: {$_POST['age'][$key]} <br/>";
     $_SESSION['post_data'][$key] = $name;
     $_SESSION['post_data'][$key] = $_POST['age'];
    echo $key; 
}

并且页面上的输出是

Name: The name potion Age: adult
1

然而,我已尝试以下方法将“名称位置”作为输出,但没有任何工作

echo $_SESSION['post_data']['name'];//doesnt have an output
echo $_SESSION['post_data'][$key];//out puts "Array" and nothing else

我想要输出 名称Position,Adult。 就像foreach循环现在正在做的那样,但是来自2d数组。谢谢你们。

2 个答案:

答案 0 :(得分:3)

您可以在PHP中轻松使用多维数组。您的示例不起作用的原因是因为它保持覆盖相同的索引

//Assuming your POST data consists of age => name pairs, you store it like this
$_SESSION['post_data'] = array();
$count = 0;
foreach ($_POST['name'] as $age => $name) {
   $_SESSION['post_data'][$count]['age']  = $age;
   $_SESSION['post_data'][$count]['name'] = $name;
   $count++;
}

要访问它,只需迭代它或使用密钥

//iterating
foreach ($_SESSION['post_data'] as $person) {
     echo "Name: {$person['name']}  Age: {$person['age']} <br/>";
}

//using the key
echo $_SESSION['post_data'][0]['age']; //print the first person's age
echo $_SESSION['post_data'][0]['name']; //print the first person's name

视觉上您的数据看起来像这样(示例)

array(
  0 => array(
    age  => 12,
    name => jane
  ),
  1 => array(
    age  => 18,
    name => jack
  ),
  2 => array(
    age  => 25,
    name => jones
  ),
)

答案 1 :(得分:1)

您可以直接将$_POST['name']存储到$_SESSION["name"],它会一直存在,

$_SESSION["name"] = $_POST['name']