2015-10-30 2 views
1

Хорошо, я действительно не знаю, как это объяснить.Удалить значение массива другим массивом

У меня есть массив сеанса:

$_SESSION['users']['currentuser']['username'] = 'stijn'; 

этот массив является построить динамически. Поэтому мне нужно также удалить некоторые значения этого массива динамически.

для этого, у меня есть функция:

function removeSessionValue($keys) { 
       $keys = explode(':', $keys); 
       var_dump(array_keys($_SESSION)); 
       $tempArray = array(); 
       $reference = &$tempArray; 
       foreach ($keys as $key) { 
        $reference[$key] = array(); 
        $reference = &$reference[$key]; 
       } 
       $multiArray = $tempArray; 
      } 

function call= removeSessionValues('users:currentuser:username'); 

Так что теперь я имею originarray (сеанс) и массив, чтобы проверить, если сеанс существует (встроенный функцией).

Есть ли способ, как я могу снять $_SESSION['user']['currentuser']['username']?

Важное примечание, мы не знаем, какие значения будут переданы в функцию, так же как и мы не знаем, что существует сессий, так как все ultradynamic ...

ответ

1

Простой способ заключается в использовании eval():

function deepUnset(&$array, $keys) 
{ 
    $cmd = 'unset($array["'.implode($keys, '"]["').'"]);'; 
    eval($cmd); 
} 

// Example: 
$_session = array(
    'users' => array(
     'currentUser' => array(
      'username' => 'stijn', 
     ),  

     'otherUser' => array(
      'username' => 'james', 
     ), 
    ) 
); 

echo '<pre>'; 
print_r($_session); 
deepUnset($_session, array('users', 'currentUser', 'username')); 
print_r($_session); 
echo '</pre>'; 
+0

это решение! МНОГИЕ МНОГО СПАСИБО !!! –

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