删除基于密钥从多维数组元素 [英] Delete element from multi-dimensional array based on key

查看:114
本文介绍了删除基于密钥从多维数组元素的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我如何从一个给定的一个关键多维数组删除元素?

我希望这是贪婪的,这样它删除阵列中的匹配我传递的按键时,我有这到目前为止,我可以遍历多维数组的所有元素,但我不能没有设置关键我需要,因为我没有对它的引用!

 函数traverseArray($数组$键)
{
    的foreach($数组$关键=> $值)
    {
        如果(is_array($值))
        {
            traverseArray($值);        }其他{            如果(in_array($键,$键))
           {
                //未设置(发生的事情吗?)            }        }
    }}


解决方案

以下code ++工程(且不去precated的东西用),只是测试它:

 函数traverseArray(安培; $数组$键){
  的foreach($数组$关键= GT;&安培; $值){
    如果(is_array($值)){
      traverseArray(价值$,$键);
    }其他{
      如果(in_array($键,$键)){
        未设置($数组[$关键]);
      }
    }
  }
}

How can I delete an element from a multi-dimensional array given a key?

I am hoping for this to be greedy so that it deletes all elements in an array that match the keys I pass in. I have this so far where I can traverse a multi-dimensional array but I can't unset the key I need to because I don't have a reference to it!

function traverseArray($array, $keys)
{ 
    foreach($array as $key=>$value)
    { 
        if(is_array($value))
        { 
            traverseArray($value); 

        } else {

            if(in_array($key, $keys))
           {                    
                //unset(what goes here?) 

            }

        } 
    }

}

解决方案

The following code works (and doesn't use deprecated stuff), just tested it:

function traverseArray(&$array, $keys) { 
  foreach ($array as $key => &$value) { 
    if (is_array($value)) { 
      traverseArray($value, $keys); 
    } else {
      if (in_array($key, $keys)){
        unset($array[$key]);
      }
    } 
  }
}

这篇关于删除基于密钥从多维数组元素的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆