Могу ли я разбить массив $ _session на строковые переменные в PHP? - PullRequest
1 голос
/ 21 сентября 2019

Мне удалось собрать переменные из пользовательского ввода на каждой странице, но я пытаюсь выяснить, могу ли я превратить $_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 [kitchen] => Asian [location] => CBD [цена] => $))


Логика: начать сеанс
Страница 1 - Вопрос 1: «ввод пользователя»
Страница 2 - Вопрос 2: «ввод пользователя»
Страница 3 - Вопрос 3: «ввод пользователя»
Последняя страница = сравнить пользовательский ввод с массивом запросов mysql


Извините за путаницу, это мой первый пост.

Ответы [ 2 ]

1 голос
/ 21 сентября 2019

extract () : импорт переменных в текущую таблицу символов из массива

$a = ['name' => 'A', 
    'cuisine'    => 'B',
    'location'   => 'C',
    'price'      => 12.3
];
extract($a,EXTR_OVERWRITE);// Please see manual to use `flags` accordingly
echo $name.'--'.$cuisine.'--'.$location.'--'.$price;

Рабочий ДЕМО: https://3v4l.org/APqoE

0 голосов
/ 21 сентября 2019

Исходя из ваших вопросов и примера, я надеюсь, что я правильно понял, что вы хотите.Вы хотите строку для каждого ввода формы, который был недавно опубликован вашим пользователем.

Ваш пример:

foreach($_POST as $key=>$value){  
    $_SESSION['post'][$key]=$value; 
}

Но из этого вы не можете фактически определить фактическое местоположение индекса ключа $ в пределах расположения массива.Также он может содержать все другие значения ключей, которые вам не нужны, поскольку вы захватываете все вводимые данные.Так почему бы не сделать это вместо этого?

if ($_POST['your-form']) {
    $array = [
       'name' => isset($_POST['name']) ? stripslashes($_POST['name']) : '',
       'cuisine' => isset($_POST['cuisine']) ? stripslashes($_POST['cuisine']) : '',
       'location' => isset($_POST['location']) ? stripslashes($_POST['location']) : '',
       'price' => isset($_POST['price']) ? stripslashes($_POST['price']) : '',   
    ];

    // now bind to session.
    $_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) {
    $val = isset($_POST[$post_key])) ? stripslashes($_POST[$post_key]) : '';
    if (!empty($val)) {
       $_SESSION['temp'][$post_key] = $val; // store into session.
    }
}

function get_value($post_key) {
    return isset($_SESSION['temp'][$post_key]) ? $_SESSION['temp'][$post_key] : NULL;
}

Итак, обе функции можно реализовать в любое время.Вот набор.

if (isset($_POST['form_name'])) {
     set_value('cuisine'); // will store into session.
}
$cuisine = get_value('cuisine');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...