【问题标题】:Delete an array value by another array用另一个数组删除一个数组值
【发布时间】:2015-10-30 00:04:22
【问题描述】:

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

我有一个会话数组:

$_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']的设置?

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

【问题讨论】:

    标签: php arrays session


    【解决方案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>';
    

    【讨论】:

      猜你喜欢
      • 2013-02-19
      • 2021-07-27
      • 2013-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多