Есть ли способ использовать несколько переменных внутри объявления $ _GET, $ _POST или $ _SESSION? - PullRequest
1 голос
/ 25 января 2012

Есть ли способ использовать несколько переменных внутри объявления $ _GET, $ _POST или $ _SESSION?

Например: $_SESSION['session_array{$i}'].

$i, являющаяся переменной счетчика, такчто у каждого сохраняемого массива есть свое имя.

Мне нужно это для сохранения нескольких ассоциативных массивов в $ _SESSION, если есть другой способ сделать это, это также будет полезно.

Ответы [ 5 ]

5 голосов
/ 25 января 2012

Вы можете (для $_POST, $_GET, $_SESSION, $_REQUEST соответственно) сделать

$_SESSION["session_array{$i}"]

Но, вы, вероятно, ищете, или лучше должны сделать

$_SESSION['session_array'][$i]

Кроме того, не забудьте использовать session_start(), прежде чем пытаться использовать переменные сеанса.

2 голосов
/ 25 января 2012

Все они поддерживают многомерные массивы.

т.е:

$_SESSION['fruit']['apple']['green']; 
$_GET['country_list']['US'];

или с переменной:

$_GET['count'][$i];
1 голос
/ 25 января 2012

Сессия:

Для сеанса вы можете сделать:

$_SESSION['key']=array('one','two','three');
echo $_SESSION['key'][1] // echos 'two'

POST:

Для отправки формы с постом вы можете добавить [] в конец имени ввода, чтобы поместить его в массив

<form method="POST" action='/' >
    <input name='arr[]' type="text" value="a">
    <input name='arr[]' type="text" value="b">
    <input name='arr[]' type="text" value="c">
</form>

Доступ к как:

echo $_POST['arr'][0] // echos 'a'

GET:

Так же, как и в форме, вы просто добавляете [] к имени переменной, и к ней можно обращаться как к массиву.

если вы посетите www.yoursite.com/index.php?test[]=a&test[]=b

вы можете сделать:

echo $_GET['test'][1] // echos 'b'
1 голос
/ 25 января 2012

Вы можете сохранить массив в $_SESSION (хотя я бы не рекомендовал делать это в других):

$session_array = array();
$session_array[$i] = 'some value';
$_SESSION['session_array'] = $session_array;

http://www.phpriot.com/articles/intro-php-sessions/7 выглядит как хорошее вступление для вас.

0 голосов
/ 25 января 2012

Почему бы просто не сделать массив многомерным:

$_SESSION['session_array'][$i]

Относительно суперглобальных $_GET и $_POST: Вы не хотите хранить вещи в этом вручную, а скорее по запросу get или post. Так что на самом деле это не проблема, ИМХО.

Тем не менее вы можете иметь многомерный $_POST суперглобальный при использовании формы ввода, такой как:

<form method="post" action="">
  <input type="text" name="name[]">
  <input type="text" name="name[]">
</form>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...