2015-10-30 59 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

這就是解決方案!許多感謝! –