Попробуйте использовать дополнительный массив, чтобы выдвинуть правильные значения. Вы вычисляете count($arr);
каждую итерацию, а когда вы делаете count($arr);
, ваш массив становится меньше, а count($arr);
возвращает меньшие значения, поэтому последние элементы не будут сравниваться, попробуйте использовать переменную для вычисления количества перед изменением цикла:
<?php
//...
$start_count = count($arr);
for ($i = 0; $i <= $start_count; $i++) {
if ($arr[$i]{0} == '#') {
echo $arr[$i] . "\n";
unset($arr[$i]);
}
}
Или удалите плохой элемент с помощью дополнительного массива, поместите хорошие элементы в новый массив и не удаляйте их из входного массива:
<?php
$arr = [
'#EXTM3U',
'#EXTINF:177,Paul Dateh & Oren Yoel - Be More',
'Be More.mp3',
'#EXTINF:291,Christopher Toy - Just Because',
'Just Because.mp3',
'#EXTINF:238,Magnetic North - Drift Away',
'Drift Away.mp3'
];
$cleared_from_mess_array = array();
for ($i = 0; $i <= count($arr); $i++) {
if ($arr[$i]{0} != '#')
{
array_push($cleared_from_mess_array,$arr[$i]);
}
}
print_r($cleared_from_mess_array);
exit;