2014-02-09 4 views
0
<? 
foreach ($data as $key => $value) { 
    $_SESSION[$key]=$value; 
}; 
?> 

Я работаю с базами данных. Я получаю данные пользователя до $data, а затем я хочу их дублировать до $_SESSION, этот код в порядке, как я хотел бы, или у него есть какие-либо проблемы, которые спровоцируют, что он не будет работать правильно?Правильно ли это использование foreach?

+1

Почему бы не использовать JSON? Вы можете просто использовать '$ _SESSION ['some_data'] = json_encode ($ data);' хранить и '$ data = json_decode ($ _ SESSION ['some_data'])' для извлечения. – CodeColorist

+0

да, вы правы, но я хочу скопировать весь массив, в котором каждый ключ соответствует одному ключу $ _SESSION, и если я это сделаю, он сохранит целые $ данные только на одно значение до $ _SESSION [key] –

+1

'$ _SESSION = $ data;' работает с PHP 5.3. – CodeColorist

ответ

0

Прямое присвоение значения в $ _SESSION работает. Я использую PHP 5.3.

<?php 
    $data = array('foo' => 'bar', 'key' => 'value', 'k' => 'v'); 
    session_start(); 
    $_SESSION = $data; 
    $_SESSION['new'] = 'new_value'; 
    print_r($_SESSION); 
?> 

Выход:

Array 
(
    [foo] => bar 
    [key] => value 
    [k] => v 
    [new] => new_value 
) 
3

Вам не нужно ; после }, потому что фигурные фигурные скобки уже указывают на начало и конец тела, но это разрешено, поэтому ваш foreach прав. Но лучше использовать

<? 
foreach ($data as $key => $value) { 
    $_SESSION[$key]=$value; 
} 
?> 

Ваш код с ; преобразованного переводчиком в

<? 
foreach ($data as $key => $value) { 
    $_SESSION[$key]=$value; 
} 
; // There is another empty command line, that is unnecessary 
?> 
0

За ненужную точку с запятой that was already mentioned, Да, это правильное использование функции foreach, если все, что вы хотите сделать, это скопируйте содержимое $data в переменную $_SESSION.

Единственное, о чем следует помнить, состоит в том, что переменная $_SESSION имеет некоторые ограничения относительно того, какие типы переменных она может удерживать. As mentioned in the documentation, содержимое переменной $_SESSION сериализуется, поэтому вы не сможете хранить там ресурсы, такие как соединения с базами данных. Проверьте раздел предупреждения в ссылке, которую я разместил.

+0

ОК спасибо! очень полезно –

Смежные вопросы