删除另一个数组

时间:2015-10-30 00:04:23

标签: php arrays session

好的,我真的不知道如何解释这个。

我有一个会话数组:

$_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']

的问题

重要提示,我们不知道该功能会传递哪些值,因为我们也不知道会话存在什么,因为一切都是超动态的......

1 个答案:

答案 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>';