Всем привет! Удаляю из массива стоп-слова, но если в массиве встречаются два и более стоп-слов, то удаляется только одно. Как это исправить? Код (PHP): $p = array('бу','и', 'в', 'на', 'под', 'над', 'из', 'с', 'по', 'о', 'об', 'обо', 'что', 'как', 'все', 'она', 'так', 'его', 'только', 'мне', 'мы', 'ты', 'вы', 'было', 'вот', 'меня', 'еще', 'нет', 'ему', 'теперь', 'когда', 'даже', 'вдруг', 'если', 'уже', 'или', 'быть', 'был', 'него', 'вас', 'нибудь', 'опять', 'вам', 'ведь', 'там', 'потом', 'себя', 'может', 'они', 'тут', 'где', 'есть', 'надо', 'ней', 'тебя', 'чем', 'была', 'сам', 'чтоб', 'без', 'будто', 'чего', 'раз', 'тоже', 'себе', 'будет', 'тогда', 'кто', 'этот', 'того', 'потому', 'этого', 'какой', 'ним', 'этом', 'почти', 'мой', 'тем', 'чтобы', 'нее', 'были', 'куда', 'зачем', 'всех', 'можно', 'при', 'другой', 'хоть', 'после', 'над', 'больше', 'тот', 'через', 'эти', 'нас', 'про', 'них', 'какая','много', 'разве', 'эту', 'моя', 'свою', 'этой', 'перед', 'чуть', 'том', 'такой', 'более', 'всю', 'объявления', 'объявление', 'объявлений','из-за','коей', 'где', 'когда', 'чей', 'кем'); // удаляем из массива не нужные слова и предлоги for ($i=0; $i<count($arr_slova1); $i++) { if(in_array($arr_slova1[$i], $p)) { unset($arr_slova1[$i]); } } PHP, JavaScript, SQL и другой код пишите внутри тегов Код ( (Unknown Language)): [b]php][/b]Тут код[b][/[/b][b]code][/b][/color]
Код (PHP): if(in_array($arr_slova1[$i], $p)) { unset($arr_slova1[$i]); } заменить на Код (PHP): while(in_array($arr_slova1[$i], $p)) { unset($arr_slova1[$i]); }
Да, потому что значение count() уменьшается после каждого удаления, а ключи элементов не меняются. Т.е. если было 100 слов и мы удалили 40-е, 50-е и 60-е, count() вернет число 97, а индекс последнего слова как был 99, так и останется. Соответственно, следует сделать так Код (Text): $count = count($arr_slova); for ($i=0; $i<$count; $i++) {