douxian7117 2017-11-09 16:11
浏览 31
已采纳

从多维数组中取消设置变量特定键

I have different multidimensional arrays with different keys and values:

$array_1 = array('cars' => array('audi' => array('a3' => array('one', 'two', 'three'), 'a5' => array('five', 'six', 'seven')), 'mercedes' => array('type_1' => array('submodel' => array('whatever'))), 'other_cat' => array('different_things')));

then I would like to unset a specific key, for example:

unset($array_1['cars']['audi']['a5']);

Now I like to "split it up", to have the key variable.

$to_unset = ['cars']['audi']['a5']; 

How can I unset that specific (variable!) key?

Aäron

  • 写回答

3条回答 默认 最新

  • dpca4790 2017-11-09 16:49
    关注

    An easy utility to avoid removing array keys that do not exist by accident:

    function removeArrayKey($path, &$array ) {
    
        $array_temp = &$array;
        $previousItem = null;
    
        $path_bits = explode( ".", $path );
    
            foreach( $path_bits as &$path_bit ) {
    
               if( !isset( $array_temp[ $path_bit ] ) ) {
                      die("Error" . $path_bit);
                       //throw new Exception( "Path does not exist in array" );
                }
    
                $previousItem = &$array_temp;
                $array_temp = &$array_temp[ $path_bit ];
    
            }
    
            if( isset( $previousItem ) ) {
    
                 unset( $previousItem[ $path_bit ] );
    
            }
    
            return $array;
    
    }
    

    To use the function, simply use removeArrayKey( "cars.mercedes.cars", $array_1 ); and separate each array index with a .

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 鼠标右键,撤销删除 复制 移动,要怎样删除
  • ¥15 使用MATLAB进行余弦相似度计算加速
  • ¥15 服务器安装php5.6版本
  • ¥15 我想用51单片机和数码管做一个从0开始的计数表 我写了一串代码 但是放到单片机里面数码管只闪烁一下然后熄灭
  • ¥20 系统工程中,状态空间模型中状态方程的应用。请猛男来完整讲一下下面所有问题
  • ¥15 我想在WPF的Model Code中获取ViewModel Code中的一个参数
  • ¥15 arcgis处理土地利用道路 建筑 林地分类
  • ¥20 使用visual studio 工具用C++语音,调用openslsx库读取excel文件的sheet问题
  • ¥100 寻会做云闪付tn转h5支付链接的技术
  • ¥15 DockerSwarm跨节点无法访问问题