2013-06-11 2 views
0

Я пишу код для индексации слов для своей поисковой системы. Что-то вроде:Получение ошибки: Неопределенное смещение

$handle = fopen("http://localhost/ps-friend/index.php", "r"); 


while($buf = fgets($handle,1024)) 
{ 
    /* Remove whitespace from beginning and end of string: */ 
    $buf = trim($buf); 

    /* Try to remove all HTML-tags: */ 
    $buf = strip_tags($buf); 
    $buf = preg_replace('/&\w;/', '', $buf); 

    /* Extract all words matching the regexp from the current line: */ 
    preg_match_all("/(\b[\w+]+\b)/",$buf,$words); 

    /* Loop through all words/occurrences and insert them into the database(Not shown here): */ 
    for($i = 0; $words[$i]; $i++) 
    { 
    for($j = 0; $words[$i][$j]; $j++) 
    { 

     $cur_word = addslashes(strtolower($words[$i][$j])); 

     echo $cur_word; 
     } 
    } 
} 

Когда я эхо $cur_word Почему я постоянно получаю ошибку Notice: Undefined offset: 2 in C:\xampp\htdocs\ps-friend\search.php on line 26, а иногда и на line 24. каков способ ее исправить?

+0

Вы просто предполагаете, что регулярное выражение соответствует чему-то и на нем накладывается петля. –

ответ

2
for($i = 0; $i < count($words); $i++) 
{ 
    for($j = 0; $j < count($words[$i]); $j++) 

Ваш код проверки $words[$i] напрямую. Но это означает, что цикл заканчивается, когда он попадает в элемент, который не существует, что вызывает предупреждение, потому что вы пытаетесь его ссылаться.

Ваша структура будет хорошо, если вы сделали: существует

for($i = 0; isset($words[$i]); $i++) 
{ 
    for($j = 0; isset($words[$i][$j]); $j++) 

isset() проверяет, является ли переменная, и не предупреждает.

+0

Да, это была ошибка .. Я исправил это. Но все же он дает ту же ошибку. –

+0

Решенный :) Большое спасибо .. отметит ваш ответ, как только это ограничение времени;) –

4

Вы для-петли выглядят немного странно. Я думаю, что вы хотите:

for($i = 0; $i < count($words); $i++) 
    { 
+0

Я его исправил. Но все же это дало ту же ошибку :( –

+0

вы тоже исправили ее для второго цикла? – steven

+0

Да, да! Я получил ответ спасибо :) –

Смежные вопросы