2012-01-30 20 views
0

最終結果を取得するには、txtファイルを読み込む際に、各単語が何回使用されたかを調べ、結果をエコーし​​ます。使用されているコードは、あなたがほとんどそれを得たPHP読み込みファイルのエラー

<?php 
$text = fopen("words.txt", "r"); 
$textarray = explode(" ",$text); 
foreach($textarray as $numbers) 
    { 
    if(isset($str_count[$numbers])) 
    $str_count[$numbers]++; 
     else 
     $str_count[$numbers]=1; 
    } 

foreach($str_count as $words => $numbers) 
echo $words.": ".$numbers."<br>"; 

?> 
+2

動作しませんどのようなあなたの質問は、何ですか? –

+0

最初のコメントは、 'preg_split( '/ \ s + /'、$ text);'のために 'explode()'を入れ替えて、複数のスペース、タブ、改行などを記述できるようにすることです。 – DaveRandom

+0

あなたが単語と頻度のリストを生成するためにPHPの組み込みのstr_word_count()関数を使用していないという事実、問題は正確に何か –

答えて

1

...貴重な提案のために前方below.Looking与えられるが、変更する必要がいくつかあります。

fopen()関数は、ファイル(この場合は読み取り用)を開き、ファイルを読み取るために使用するリソース(ファイルのハンドル)を返します。ファイルの内容は返されません。詳しい情報が必要な場合は、fopen() documentationをご確認ください。 簡略化のためにfopen()file_get_contents()に置き換えました。

@DaveRandomは、explode()preg_split('/\s+/', $text);に置き換えることをお勧めします。これは、複数のスペースを扱うことができるためです。もちろん、これは必須ではありませんが、推奨されます。

最後に、preg_split('/\s+/', $text)でスクリプトに空の要素があることがわかりました。したがって、空の文字列を追加しないようにifステートメントを追加しました。このステップも必要ではないので、必要がない場合は最初のifステートメントを削除してください。

そして、ここで変更されたソースコードである:

<?php 
$text = file_get_contents('words.txt'); 
$textarray = preg_split('/\s+/', $text); 
foreach($textarray as $numbers) 
{ 
    if(empty($numbers)) { 
     continue; 
    } 
    if(isset($str_count[$numbers])) 
     $str_count[$numbers]++; 
    else 
      $str_count[$numbers]=1; 
} 

foreach($str_count as $words => $numbers) 
    echo $words.": ".$numbers."<br>"; 

?> 
+0

ありがとうTautvidas .. – Arun