好的,我真的不知道如何解释这个。
我有一个会话数组:
$_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']
重要提示,我们不知道该功能会传递哪些值,因为我们也不知道会话存在什么,因为一切都是超动态的......
答案 0 :(得分: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>';