Функция печатается дважды

#php #arrays #function #foreach #echo

#php #массивы #функция #foreach #echo

Вопрос:

Я создал эту функцию, один и тот же результат печатается дважды. Есть идеи, почему? это моя функция? Я не могу найти в этом ничего плохого.

$valid — это массив.

 function validOutput($output, $valid, $name, $mirror){
                foreach($valid as $e) {
                    if(strpos($output, $e) != false) {
                        echo '<br />' . $name . '<br />';
                        echo '<textarea cols=100 rows=10>';
                        echo '[tab: Mirror' . $mirror . ']';
                        echo $output;
                        echo "</textarea>"; 
                    }
                }
}
  

Пожалуйста, скажите мне, если вы видите в этом что-то неправильное, спасибо.

Редактировать:

 $valid = array("facebook", "fbcdn", "megavideo", "video", "videoweed", "4shared");
  

Комментарии:

1. каково содержимое $valid ?

2. из этого кода невозможно узнать, в чем на самом деле проблема, но либо вы вводите ложную информацию в $valid, либо дважды вызываете validOutput()

3. @crayon Violet «дублирующая информация в $ valid», Вот и все. Спасибо.

Ответ №1:

$valid содержит два элемента, которые являются подстроками $output

Можете ли вы показать несколько примеров входных данных? Может быть, объясните, какова мотивация, стоящая за $valid параметром?

Комментарии:

1. @jon_darkstar понял это, это было «видео», появляющееся дважды. Спасибо 🙂

2. я все еще не совсем понимаю мотивацию того, что вы делаете, не то чтобы мне это было нужно. вы хотите напечатать это по одному разу для каждого элемента $valid , который не является частью $output ? если она делает то, что вы хотите, то это фантастика, я просто не понимаю

3. @jon_darkstar Нет, но я хочу печатать материал, содержащий строки из $valid, если это имеет какой-либо смысл.

4. ооо, я неправильно прочитал != это будет сделано, как вы говорите, но в выводе нет никакой части $e , поэтому он просто будет повторен. выходные данные не будут отличаться друг от друга.

5. @jon_darkstar Это в функции while, где $output[$i] 😛

Ответ №2:

Я не знаю, может ли это быть проблемой, но strpos() должно быть проверено как === false или !== false , потому что strpos может быть 0 , и это будет рассматриваться как false .

Doc > http://php.net/manual/en/function.strpos.php

Комментарии:

1. Ах, я вижу, каким-то образом код работает просто отлично. Я все равно это исправлю. Спасибо.