Сравните определенные строки в текстовых файлах

Я пытаюсь сравнить первые 10 строк из 100 строк $completeGoogle(5000Lines) и подсчитать количество совпадений с другим файлом. Однако мой счет должен быть между 1-10, и я получаю ответ 5010???

foreach(new SplFileObject($completeGoogle) as $n => $line)
             if($n % 100 < 10)
                {
                    $f_Api = fopen($apiFile,'r');

                for ($i = 0 ;$i < 10; $i++)
                    {
                    $top10 = fgets($f_Api);
                        if ($line === $top10);
                            {
                            $count++;
                            }
                    }

                    fclose($f_Api);
                }

person Calgar99    schedule 30.07.2012    source источник
comment
Вы никогда не увеличиваете $n   -  person Matt    schedule 30.07.2012
comment
$n находится в цикле foreach, он увеличивается каждый раз.   -  person Summoner    schedule 30.07.2012
comment
@Summoner хороший звонок; Я этого там не видел.   -  person Matt    schedule 30.07.2012
comment
Вы проверяете, меньше ли остаток от деления на 100, чем 10. Итак, вы if делаете не то, что, по вашему мнению, делаете.   -  person Alex W    schedule 30.07.2012
comment
Почему бы просто не иметь счетчик, который заставляет ваш foreach сломаться, как только он достигает 100, вместо $n % 100?   -  person Matt    schedule 30.07.2012
comment
Я не совсем понимаю, что он имеет в виду под первыми 10 строками из 100 строк $completeGoogle(5000Lines), но, судя по коду, Мэтт, вероятно, прав.   -  person Summoner    schedule 30.07.2012
comment
то есть читать каждые 10 строк, то есть строки 1->10, строки 101->110, строки 201->210 и т. д.   -  person Calgar99    schedule 30.07.2012
comment
Если предположить, что $n начинается с 0, тогда да.   -  person Calgar99    schedule 30.07.2012
comment
Поместите переменную count внутри foreach вне if и сообщите нам, сколько раз выполняется этот цикл.   -  person Alex W    schedule 30.07.2012


Ответы (2)


Вы сравниваете каждую строку 1-9, 100-109... в одном файле с 10 строками в другом и суммируете все совпадения в одной переменной $count. Если все одинаково, вы должны получить 500 (строк из первого файла) * 10 (строк из другого) = 5000 совпадений.

person Bihaqo    schedule 30.07.2012
comment
Проблема в том, что совпадения не равны. - person Calgar99; 30.07.2012

Причина, по которой это не удавалось, заключалась в простом ";" после оператора if.

foreach(new SplFileObject($completeGoogle) as $n => $line)
             if($n % 100 < 10)
                {
                    $f_Api = fopen($apiFile,'r');

                for ($i = 0 ;$i < 10; $i++)
                    {
                    $top10 = fgets($f_Api);
                        if ($line === $top10)
                            {
                            $count++;
                            }
                    }

                    fclose($f_Api);
                }
person Calgar99    schedule 30.07.2012