Существуют различные способы удалить элемент массива, где некоторые более полезны для некоторых определенных задач, чем другие.
, Если Вы хотите удалить всего один элемент массива, можно использовать \unset()
или альтернативно \array_splice()
.
Также, если Вы имеете значение и не знаете, что ключ удаляет элемент, можно использовать \array_search()
для получения ключа.
\unset()
метод Примечание, что, когда Вы будете использовать \unset()
, ключи массива не изменятся/повторно индексируют. Если Вы хотите повторно индексировать ключи, можно использовать \array_values()
после \unset()
, который преобразует все ключи к числовым перечислимым ключам, запускающимся от 0.
Код
"a", 1 => "b", 2 => "c"];
\unset($array[1]);
//↑ Key which you want to delete
?>
Вывод
[
[0] => a
[2] => c
]
\array_splice()
метод , Если Вы используете \array_splice()
, ключи будут автоматически повторно индексированы, но ассоциативные ключи не изменятся в противоположность [1 117], который преобразует все ключи к числовым ключам.
Также \array_splice()
потребности смещение, не ключ! как второй параметр.
Код
"a", 1 => "b", 2 => "c"];
\array_splice($array, 1, 1);
//↑ Offset which you want to delete
?>
Вывод
[
[0] => a
[1] => c
]
array_splice()
то же как [1 120] берет массив ссылкой, и это означает, что Вы не хотите присваивать возвращаемые значения тех функций назад к массиву.
, Если Вы хотите удалить несколько элементов массива и не хотите звонить \unset()
, или \array_splice()
многократно можно использовать функции \array_diff()
или \array_diff_key()
в зависимости от того, если Вы знаете значения или ключи элементов, которые Вы хотите удалить.
\array_diff()
метод , Если Вы знаете значения элементов массива, которые Вы хотите удалить, затем можно использовать \array_diff()
. Как прежде с [1 127] это не изменится/повторно индексирует ключи массива.
Код
"a", 1 => "b", 2 => "c"];
$array = \array_diff($array, ["a", "c"]);
//└────────┘→ Array values which you want to delete
?>
Вывод
[
[1] => b
]
\array_diff_key()
метод , Если Вы знаете ключи элементов, которые Вы хотите удалить, затем Вы хотите использовать \array_diff_key()
. Здесь необходимо удостовериться, что Вы передаете ключи как ключи во втором параметре и не как значения. Иначе необходимо отразить массив с [1 142] \array_flip()
. И также здесь ключи не изменятся/повторно индексируют.
Код
"a", 1 => "b", 2 => "c"];
$array = \array_diff_key($array, [0 => "xy", "2" => "xy"]);
//↑ ↑ Array keys which you want to delete
?>
Вывод
[
[1] => b
]
Также, если Вы хотите использовать \unset()
или \array_splice()
для удаления нескольких элементов с тем же значением, можно использовать \array_keys()
, чтобы получить все ключи для определенного значения и затем удалить все элементы.
Так как JDK 11 там OutputStream.nullOutputStream()
. Это делает точно, что Вы ищете:
System.setOut(new PrintStream(OutputStream.nullOutputStream());