2017-04-05 1 views
0

私は4つの値を持つ配列を持っています。私は、配列内の値のテキストファイルを検索し、文字列が利用可能な行番号を返したいと思います。しかし、私のコードが実行されると、配列の最初の値の行番号だけが与えられ、残りの配列値についても同じ行番号が出力されます。私は$codeをエコーするとforeach内のwhileループを使って文字列の行番号を取得する

$scheme_code = array("106212","112422","114239","128053"); 

    $search  = $scheme_code[0]; 

    $i = 0; 
    $line_number = false; 
    $count = 0; 
    $handle = fopen("http://portal.amfiindia.com/spages//NAV0.txt", 'r'); 
    foreach ($scheme_code as $code) { 
     echo $code."<br>"; 
     while (($line = fgets($handle, 4096)) !== FALSE and !$line_number) { 
      $count++; 
      $line_number = (strpos($line, $code) !== FALSE) ? $count : $line_number; 
     } 
     echo "The line number is".$line_number."<br>"; 

     //fclose($handle); 
    } 

私の出力は、この106212 The line number is 5386 112422 The line number is 5386 114239 The line number is 5386 128053 The line number is 5386

5386 is the line number of the value 106212. 

のようなものです。 $codeが印刷されますが、最初のコードの行番号は残りのコードだけが印刷されます。

答えて

0

whileループの外側で$ line_numberの値をリセットする必要があります。これは、whileループが実行されない条件です。

したがって、$ line_number変数をforeach内に宣言します。

関連する問題