我怎么能从关联数组中删除一个键和它的值?
给定一个关联数组:
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'));