开发者

Remove a set of fields from a array

Is there a native PHP function that can remove a set of keys from a array?

for eg. if I have a array like array('a' => 'aaa', 'b' => 'bbb', 'c' => 'ccc', 'd' => 'ddd');

and I want to r开发者_如何学Cemove 'b', 'c' and get array('a' => 'aaa', 'd' => 'ddd'); ?


It's array_diff_key.

$input = array(...);
$remove = array_flip(array('a', 'b')); // 'a' and 'b' are the keys to remove
$output = array_diff_key($input, $remove);

See it in action.


$array = array('a', 'b', 'c', 'd')
foreach($array as $k=>$v){
  if (in_array($v,array('b','c'))) unset($array[$k]);
}


An alternate to everyone else's answer, though all valid in their own way, is the array_splice function.

$foo = Array(
  'a' => 'aaaa',
  'b' => 'bbbb',
  'c' => 'cccc',
  'd' => 'dddd'
);
var_dump($foo);
array_splice($foo, 1, 2);
var_dump($foo);

Which produces:

array(4) {
  ["a"]=>
  string(4) "aaaa"
  ["b"]=>
  string(4) "bbbb"
  ["c"]=>
  string(4) "cccc"
  ["d"]=>
  string(4) "dddd"
}
array(2) {
  ["a"]=>
  string(4) "aaaa"
  ["d"]=>
  string(4) "dddd"
}


If you don't have too many fields to remove, you can use unset():

unset($foo['b']);
unset($foo['c']);
var_dump($foo)
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜