Как в Java перенаправить System.out на null, а затем снова на stdout?

Существуют различные способы удалить элемент массива, где некоторые более полезны для некоторых определенных задач, чем другие.

Удаляют один элемент массива

, Если Вы хотите удалить всего один элемент массива, можно использовать \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() , чтобы получить все ключи для определенного значения и затем удалить все элементы.

34
задан dgrant 25 January 2011 в 21:23
поделиться