Удалить элемент из массива по условию
Друзья, подскажите, есть массив с 5-ю элементами, нужно из этого массива удалить все не угодные элементы (в данном случае 3й и 4й элемент):
array(5) {
[0]=>
string(19) "0,91,90,76.5,106,70"
[1]=>
string(19) "1,91,89,75,105,70.8"
[2]=>
string(19) "2,90,89,74,103,68.8"
[3]=>
string(11) "3,-,-,-,-,-"
[4]=>
string(11) "4,-,-,-,-,-"
}
Все элементы в которых стоят прочерки - нужно удалить. Пробовал делать проверку с счетчиком и проверять по третьему [2] символу в каждой строке, но ловлю себя на мысли, что в архитектуре торможу и существет более элегентный способ получить ожидаемый результат!
$count = 0;
foreach($arr as $row) {
if($row[2] == '-') {
unset($row[$count]);
} else {
$count++;
}
}
UPD Решение найдено, оно подходит в конкретно моем случае! Достаочно проверить по количеству симвалов с строке! Так как у неугодныхэлементов в строке 11 символов, в отличие от всех остальных!
$count = 0;
foreach($arr as $row) {
if(strlen($row) === 11) {
unset($arr[$count]);
}
$count++;
}
Ответы (1 шт):
Если необходимо просто удалить элементы, и вы знаете индексы этих элементов, то можно использовать метод unset
$index1 = 3;
unset($your_arr[$index1]);
$index2 = 4;
unset($your_arr[$index2]);
ну или тоже самое в цикле. Можно сначала найти все значения индексов в которых встречается хотя бы один "-", и потом удалить эти элементы. Ваш метод очень хардкорный, и если в массиве будет что-то неожиданное может не сработать... но если вас устраивает.