За последние 24 часа нас посетили 19790 программистов и 1393 робота. Сейчас ищут 1045 программистов ...

Как правильно реализовать следующую идею?

Тема в разделе "Прочие вопросы по PHP", создана пользователем neverlose, 27 сен 2011.

  1. neverlose

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

    С нами с:
    27 авг 2008
    Сообщения:
    1.112
    Симпатии:
    20
    Как правильно реализовать следующую идею?

    Интересует вариант без eval()

    PHP:
    1.     public static function updateSession( $key, $val)
    2.     {
    3.         $keys = explode('.', $key);
    4.  
    5.         $n = count( $keys);
    6.  
    7.         $_SESSION[$keys[0]][$keys[1]]...[$keys[$n-1]][$keys[$n]] = $val;
    8.     }
     
  2. topas

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

    С нами с:
    16 авг 2006
    Сообщения:
    2.258
    Симпатии:
    36
    жесть, у меня фантазия не позволяет даже предположить для чего ЭТО

    PHP:
    1. <?php
    2. $session = array();
    3.  
    4. function update($string, $value){
    5.     global $session;
    6.  
    7.     $keys  = explode('.', $string);
    8.  
    9.     $array = &$session;
    10.     foreach ($keys as $result){
    11.         $array = &$array[$result];
    12.     }
    13.  
    14.     $array[$result] = $value;
    15. }
    16.  
    17. update('one.two.three.four', 4);
    18. update('one.other.three', 8);
    19.  
    20. print_r($session);
    21.  
    Код (Text):
    1.  
    2. :!php test.php
    3. Array (
    4.     [one] => Array (
    5.             [two] => Array (
    6.                     [three] => Array (
    7.                             [four] => Array (
    8.                                     [four] => 4
    9.                                 )
    10.                         )
    11.                 )
    12.             [other] => Array (
    13.                     [three] => Array (
    14.                             [three] => 8
    15.                         )
    16.                 )
    17.         )
    18. )
     
  3. neverlose

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

    С нами с:
    27 авг 2008
    Сообщения:
    1.112
    Симпатии:
    20
    Спасибо, я уже сделал, просто у меня на выходе был пуст индекс users, я думал что пишу что-то не так, оказывается на хостинге register globals On, а у меня в коде есть $users = array(); вот он и обнулялся, вот мой код:

    PHP:
    1.     public static function updateSession( $key, $val)
    2.     {
    3.         $s =& $_SESSION;
    4.         $keys = explode('.', $key);
    5.  
    6.         while( !empty( $keys))
    7.         {
    8.             $key = array_shift( $keys);
    9.             $s =& $s[$key];
    10.         }
    11.  
    12.         $s = $val;
    13.  
    14.         return true;
    15.     }
     
  4. topas

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

    С нами с:
    16 авг 2006
    Сообщения:
    2.258
    Симпатии:
    36
    neverlose
    И всё-таки, зачем такое извращение?