Как сократить код циклом или другим способом ( переменных намного больше, просто привел к примеру основные 2 ) PHP: $nick = $_SESSION['id']['nick']; $pass = $_SESSION['id']['pass'];
@Sasha361 В сессии пароль не рекомендуется хранить, возьми себе на заметку, ну конечно если это пароль.
PHP: function sid($name, $group = 'id') { return isset($_SESSION[$group][$name]) ? $_SESSION[$group][$name] : null; } $nick = sid('nick'); $pass = sid('pass'); Или еще проще: PHP: $u = $_SESSION['id']; echo $u['nick'] . ': ' . $u['pass'];
@Sasha361, вот ещё примерчик: PHP: <?php // для теста - $arr. Вместо $_SESSION // сгенерируем тестовые данные $arr = ['id' => []]; $N = 15; while($N--) { $key = randomString(); $value = rand(1,100); $arr['id'][$key] = $value; } // сгенерировали. Посмотрим на них var_dump($arr['id']); // -- скопируем данные из массива в переменные foreach($arr['id'] as $key => $value) { ${$key} = $value; } // -- скопировали // добьем $arr значениями белого списка (двумя из трех) $arr['id']['nick'] = 'someNickName'; $arr['id']['pass'] = 'somePassWord'; // либо с использованием белого списка $aValid = ['nick', 'pass', 'someohterparam']; $aStored = []; foreach($arr['id'] as $key => $value) { if(in_array($key, $aValid)) { ${$key} = $value; // на случай, если в $arr будут отсутствовать разрешенные значения $aStored[] = $key; } } // определим не полученные из $arr значения белого списка foreach(array_diff($aValid, $aStored) as $value) { $$value = 'defaultValue'; } // уберем лишние unset($aStored, $value, $key, $aValid, $N); // поглядим на все определенные переменные $aDefVars = get_defined_vars(); var_dump($aDefVars); // -- последние 15 + 3 наши новые переменные, что были в массиве $arr['id'] или доопределенные значения белого списка function randomString($length = 6) { $str = ""; $characters = array_merge(range('A','Z'), range('a','z')); $max = count($characters) - 1; for ($i = 0; $i < $length; $i++) { $rand = rand(0, $max); $str .= $characters[$rand]; } return $str; } Для справки: Переменные переменных