2016-06-27 9 views
1

ファイルからログを読み込み、管理パネルにリストとして表示したい。私はこのコードがうまくいくはずですが、明らかにそうではありません。ループはリストに何も印刷せず、ループの上の2行はファイルの最初の行だけを出力します。私は問題が配列logの私の建設にあると思う。このプロジェクトは初めてのPHPの使用であるため(通常はC言語で作業します)、裁判をしないでください。ファイルの内容を読み込んで配列として保存する

<select name=servers size=50 style=width:1028px> 
<?php 
    $start="0"; 
    $start=$_POST['start']; 

    if ($start=="1") { 
    //start the server, this works. 
    } 
    elseif ($start=="2") { 
    $log=fopen("file.log", "r"); 
    $asdf = sprintf ("<option >%s</option>", $log); 
    echo $asdf; //these two lines are for testing purposes, 
     //they print only one line of the file in the list. 

    $i=0; 
    while ($log[$i]!=null) { 
     $asdf[$i] = sprintf ("<option >%s</option>", $log[$i]); 
     echo $asdf[$i]; 
     $i++; //this loop is the problem, doesn't print anything. 
    } 
    echo fread($log,filesize("file.log")); 
    echo $log; 
    } 
?> 

助けてください。

+0

'$ asdf'を' string'として初期化し、それを 'array'のように使いました。 – MaoTseTongue

答えて

2

代わりの

$log=fopen("file.log", "r"); 

使用

$log=file("file.log"); 

はまた、あなたのコードが動作しない理由はfopenはのハンドルを返すことである

foreach($log as $logline) { 
    // print $logline the way you want 
} 

にwhileループを変更ファイルとそれを使用する特別な機能が必要:fread, fclose, feoffile()関数はファイル全体を配列に読み込みます(各要素は1行です)。中小のテキストファイルの場合、それは理想的な方法です。

+0

うん、$ log = file( "file.log");これが助けになりました。ありがとう、それは今働きます! – Mirakurun

+0

ちょうどforeachが私のために働かないことを言及する。私は作っていた別のリストでも試してみましたが、うまくいきませんでした。私は私のwhileループにとどまります。 – Mirakurun

0

fopenは、配列ではなくファイルハンドラを返します。行ずつを読み取るには、あなたはwhileループでfgetsを使用することができます。代わりに、しばらくの

while (($line = fgets($log)) !== false) { 
    $asdf[$i] = sprintf ("<option >%s</option>", $line); 
} 
0

を、多分foreachのを使うのか?このような

while ($log[$i]!=null) { 
       $asdf[$i] = sprintf ("<option >%s</option>", $log[$i]); 
       echo $asdf[$i]; 
       $i++; //this loop is the problem, doesn't print anything. 
      } 

=>

foreach ($logs as $log) { 
       $asdf[$i] = sprintf ("<option >%s</option>", $log); 
       echo $asdf[$i]; 
       $i++; //this loop is the problem, doesn't print anything. 
      } 

何か?

関連する問題