我可以在 PHP 中将 $_session 数组拆分为字符串变量吗?

我已经能够从每个页面上的用户输入中收集变量,但我试图弄清楚我是否可以$_SESSION['post'][$key]=$value;变成这样的东西:


$name = $_SESSION[$name];

$cuisine = $_POST['cuisine'];

$location = $_POST['location'];

$price = $_['price'];

这里的每个变量都是用户在每个页面上输入的内容。我可以拆分$_SESSION数组吗?


我一直在寻找如何做到这一点的日子,但这就是我到目前为止所得到的......


//this can be found on all the pages to retrieve the user input


<?php

session_start();

//retrieve form data and store as an array as key/value

foreach($_POST as $key=>$value){

    $_SESSION['post'][$key]=$value;

}

print_r($_SESSION);

?>


所以我从上面的代码中得到了数组: Array ( [post] => Array ( [name] => Michael [cuisine] => Asian [location] => CBD [price] => $ ) )



逻辑:开始会话

第 1 页 - 问题 1:“用户输入”

第 2 页 - 问题 2:“用户输入”

第 3 页 - 问题 3:“用户输入”

最后一页 = 将用户输入与 mysql 查询数组进行比较



抱歉有任何混淆,这是我的第一篇文章。


胡子哥哥
浏览 160回答 2
2回答

慕桂英546537

extract() : 从数组中将变量导入当前符号表$a = ['name' => 'A',&nbsp;&nbsp; &nbsp; 'cuisine'&nbsp; &nbsp; => 'B',&nbsp; &nbsp; 'location'&nbsp; &nbsp;=> 'C',&nbsp; &nbsp; 'price'&nbsp; &nbsp; &nbsp; => 12.3];extract($a,EXTR_OVERWRITE);// Please see manual to use `flags` accordinglyecho $name.'--'.$cuisine.'--'.$location.'--'.$price;工作演示:https ://3v4l.org/APqoE

蝴蝶不菲

根据您的问题和示例,我希望我能做到您想要的。您希望用户最近发布的每个表单输入都有一个字符串。你的例子:foreach($_POST as $key=>$value){&nbsp;&nbsp;&nbsp; &nbsp; $_SESSION['post'][$key]=$value;&nbsp;}但由此您无法实际识别数组位置中 $key 的实际索引位置。它还可能包含您不需要的所有其他键值,因为您正在捕获所有输入。那么为什么不这样做呢?if ($_POST['your-form']) {&nbsp; &nbsp; $array = [&nbsp; &nbsp; &nbsp; &nbsp;'name' => isset($_POST['name']) ? stripslashes($_POST['name']) : '',&nbsp; &nbsp; &nbsp; &nbsp;'cuisine' => isset($_POST['cuisine']) ? stripslashes($_POST['cuisine']) : '',&nbsp; &nbsp; &nbsp; &nbsp;'location' => isset($_POST['location']) ? stripslashes($_POST['location']) : '',&nbsp; &nbsp; &nbsp; &nbsp;'price' => isset($_POST['price']) ? stripslashes($_POST['price']) : '',&nbsp; &nbsp;&nbsp; &nbsp; ];&nbsp; &nbsp; // now bind to session.&nbsp; &nbsp; $_SESSION['temp'] = $array;}现在,对于您在回调期间需要的字符串,只需:list($name, $cuisine, $location, $price) = $_SESSION['temp'];var_dump($name);var_dump($cuisine);var_dump($location);var_dump($price);编辑:基于评论。我们做得到。function set_value($post_key) {&nbsp; &nbsp; $val = isset($_POST[$post_key])) ? stripslashes($_POST[$post_key]) : '';&nbsp; &nbsp; if (!empty($val)) {&nbsp; &nbsp; &nbsp; &nbsp;$_SESSION['temp'][$post_key] = $val; // store into session.&nbsp; &nbsp; }}function get_value($post_key) {&nbsp; &nbsp; return isset($_SESSION['temp'][$post_key]) ? $_SESSION['temp'][$post_key] : NULL;}因此,使用这两个功能,您可以随时实现。这里有一套。if (isset($_POST['form_name'])) {&nbsp; &nbsp; &nbsp;set_value('cuisine'); // will store into session.}$cuisine = get_value('cuisine');
打开App,查看更多内容
随时随地看视频慕课网APP