$item
в foreach является ссылкой на значение. См. На этой странице объяснение о Снятии ссылок .
Когда вы снимаете ссылку, вы просто разрываете привязку между именем переменной и содержимым переменной. Это не означает, что содержимое переменной будет уничтожено.
Как указано в комментариях, вы можете использовать неустановленную индексацию в массиве с помощью ключа, например unset($new_str[$item_key]);
Вам не нужна ссылка &$item
.
Более короткий способ сделать это - использовать preg_grep , соответствующий одному di git. Вам не нужен квантификатор +
после класса символа, так как вы только определяете, присутствует ли он git.
$new_str = preg_grep("~[0-9]~", $new_str);
Или немного более точно для данных примера, сопоставьте di git, двоеточие и ди git:
$new_str = preg_grep("~[0-9]:[0-9]~", $new_str);
Вывод
Array
(
[0] => Bert14:50
[2] => Sarah14:50
[3] => Dennis14:50
)
Php демо
Если хотите для сброса ключей вы можете использовать array_values($new_str)