Учитывая ассоциативный массив:
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 = array("key1" => "value1", "key2" => "value2"); print_r($array); unset($array['key1']); print_r($array); unset($array['key2']); print_r($array);
с$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)); }
Первый параметр передает весь массив, второй набор параметров массива ключей для удаления.
Например:
$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]); } }
с$arr[$key1][$key2][$key3]=$value1; // ....etc foreach ($arr as $key1 => $values) { foreach ($key1 as $key2 => $value) { unset($arr[$key1][$key2]); } }
Ниже приведен метод, который удаляет элементы из ассоциативности со смещением, длиной и заменой – с использованием 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'));