我怎么能从关联数组中删除一个键和它的值?

给定一个关联数组:

array("key1" => "value1", "key2" => "value2", ...) 

在给出关键字的情况下,我将如何去除某个键值对?

你可以使用unset

 unset($array['key-here']); 

例:

 $array = array("key1" => "value1", "key2" => "value2"); print_r($array); unset($array['key1']); print_r($array); unset($array['key2']); print_r($array); 

输出:

 Array ( [key1] => value1 [key2] => value2 ) Array ( [key2] => value2 ) Array ( ) 

使用unset()

 unset($array['key1']); 

使用此函数删除特定的密钥数组而不修改原始数组:

 function array_except($array, $keys) { return array_diff_key($array, array_flip((array) $keys)); } 

第一个parameter passing所有的数组,第二个参数设置键的数组删除。

例如:

 $array = [ 'color' => 'red', 'age' => '130', 'fixed' => true ]; $output = array_except($array, ['color', 'fixed']); // $output now contains ['age' => '130'] 

使用unset

 unset($array['key1']) 

你可能需要两个或更多的循环取决于你的数组:

 $arr[$key1][$key2][$key3]=$value1; // ....etc foreach ($arr as $key1 => $values) { foreach ($key1 as $key2 => $value) { unset($arr[$key1][$key2]); } } 

下面是一个方法,从偏移量,长度和replace关联中删除项目 – 使用array_splice

  function array_splice_assoc(&$input, $offset, $length = 1, $replacement = []) { $replacement = (array) $replacement; $key_indices = array_flip(array_keys($input)); if (isset($input[$offset]) && is_string($offset)) { $offset = $key_indices[$offset]; } if (isset($input[$length]) && is_string($length)) { $length = $key_indices[$length] - $offset; } $input = array_slice($input, 0, $offset, TRUE) + $replacement + array_slice($input, $offset + $length, NULL, TRUE); return $input; } // Example $fruit = array( 'orange' => 'orange', 'lemon' => 'yellow', 'lime' => 'green', 'grape' => 'purple', 'cherry' => 'red', ); // Replace lemon and lime with apple array_splice_assoc($fruit, 'lemon', 'grape', array('apple' => 'red')); // Replace cherry with strawberry array_splice_assoc($fruit, 'cherry', 1, array('strawberry' => 'red'));