За последние 24 часа нас посетили 21407 программистов и 1023 робота. Сейчас ищут 711 программистов ...

Нужно сократить код

Тема в разделе "Сделайте за меня", создана пользователем Sasha361, 28 окт 2017.

  1. Sasha361

    Sasha361 Новичок

    С нами с:
    28 окт 2017
    Сообщения:
    2
    Симпатии:
    0
    Как сократить код циклом или другим способом ( переменных намного больше, просто привел к примеру основные 2 )

    PHP:
    1.      
    2.     $nick = $_SESSION['id']['nick'];
    3.     $pass = $_SESSION['id']['pass'];
     
  2. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.072
    Симпатии:
    1.237
    Адрес:
    там-сям
    Тебя преподаватель попросил сократить? Если нет — оставь как есть. Ничего критичного здесь нет.
     
  3. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.230
    Симпатии:
    1.715
    Адрес:
    Молдова, г.Кишинёв
  4. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @Sasha361
    В сессии пароль не рекомендуется хранить, возьми себе на заметку, ну конечно если это пароль.
     
    TeslaFeo, denis01 и MouseZver нравится это.
  5. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.748
    Симпатии:
    1.321
    Адрес:
    Лень
    интересно будет, когда в учительский код прописать после <?php
    это:
    error_reporting ( E_ALL );
     
  6. acso

    acso Активный пользователь

    С нами с:
    15 апр 2010
    Сообщения:
    150
    Симпатии:
    25
    Адрес:
    Одесса
    PHP:
    1. function sid($name, $group = 'id') {
    2.   return isset($_SESSION[$group][$name]) ? $_SESSION[$group][$name] : null;
    3. }
    4. $nick = sid('nick');
    5. $pass = sid('pass');
    Или еще проще:
    PHP:
    1. $u = $_SESSION['id'];
    2. echo $u['nick'] . ': ' . $u['pass'];
     
  7. Sail

    Sail Старожил

    С нами с:
    1 ноя 2016
    Сообщения:
    1.591
    Симпатии:
    360
    @Sasha361, вот ещё примерчик:
    PHP:
    1. <?php
    2. // для теста - $arr. Вместо $_SESSION
    3. // сгенерируем тестовые данные
    4. $arr = ['id' => []];
    5. $N = 15;
    6. while($N--) {
    7.     $key = randomString();
    8.     $value = rand(1,100);
    9.     $arr['id'][$key] = $value;
    10. }
    11. // сгенерировали. Посмотрим на них
    12. var_dump($arr['id']);
    13.  
    14. // -- скопируем данные из массива в переменные
    15. foreach($arr['id'] as $key => $value) {
    16.     ${$key} = $value;
    17. }
    18. // -- скопировали
    19.  
    20. // добьем $arr значениями белого списка (двумя из трех)
    21. $arr['id']['nick'] = 'someNickName';
    22. $arr['id']['pass'] = 'somePassWord';
    23. // либо с использованием белого списка
    24. $aValid = ['nick', 'pass', 'someohterparam'];
    25. $aStored = [];
    26. foreach($arr['id'] as $key => $value) {
    27.     if(in_array($key, $aValid)) {
    28.         ${$key} = $value;
    29.         // на случай, если в $arr будут отсутствовать разрешенные значения
    30.         $aStored[] = $key;
    31.     }
    32. }
    33. // определим не полученные из $arr значения белого списка
    34. foreach(array_diff($aValid, $aStored) as $value) {
    35.     $$value = 'defaultValue';
    36. }
    37.  
    38. // уберем лишние
    39. unset($aStored, $value, $key, $aValid, $N);
    40. // поглядим на все определенные переменные
    41. $aDefVars = get_defined_vars();
    42. var_dump($aDefVars);
    43. // -- последние 15 + 3 наши новые переменные, что были в массиве $arr['id'] или доопределенные значения белого списка
    44.  
    45. function randomString($length = 6) {
    46.     $str = "";
    47.     $characters = array_merge(range('A','Z'), range('a','z'));
    48.     $max = count($characters) - 1;
    49.     for ($i = 0; $i < $length; $i++) {
    50.         $rand = rand(0, $max);
    51.         $str .= $characters[$rand];
    52.     }
    53.     return $str;
    54. }
    Для справки: Переменные переменных