Изменение массивов в php из post в переменную сессии - PullRequest
0 голосов
/ 11 декабря 2011

пару дней назад я разместил здесь и получил отличный ответ о том, как обращаться с массивами.Это было именно то, что мне было нужно

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 являются новыми для меня.

РЕДАКТИРОВАТЬ

После попытки опубликовать сообщение

моя страница выглядит следующим образом

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

Я бы хотел, чтобы вывод был Позиция имени, Взрослый.Так же, как цикл foreach делает прямо сейчас, но из 2d массива.Спасибо, ребята.

Ответы [ 2 ]

3 голосов
/ 11 декабря 2011

Вы можете так же легко использовать многомерный массив в 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 голос
/ 11 декабря 2011

Вы можете напрямую сохранить $_POST['name'] до $_SESSION["name"], и оно сохранится,

$_SESSION["name"] = $_POST['name']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...