2016-09-02 1 views
0

で同じ単語に引っかかって生成やあみんな、私はPHPに新たなんだと私はテキストファイルからランダムに単語を取得し、ここでのコードであるページ作りたかった:ランダム語PHP

<?php 
$chosen="Word"; 
function get(){ 
    $lines= file ("words.txt"); 
    $words=count($lines); 
    $chosen=$lines[rand(0 ,$words - 1)]; 
    return $chosen; 
} 
?> 

をそして私は、JSからそれを呼び出す:

word = <?php echo json_encode(get()); ?>; 
document.getElementById("button").innerHTML = word 

私が手の問題は、関数がランダムな単語を返しますが、その後、それは何度もまったく同じ単語の最初の時間です。

+2

を、言葉ではない。あなたのファイルには、それぞれの単語が別々の行にあることを確認してください。 – RomanPerekhrest

+0

@RomanPerekhrestに同意し、コードが構文的に正しいように見えます。 – MonkeyZeus

+2

PHPとJSのやりとりの一般的な誤解に陥った可能性があります。あなたがここに書いたやり方では、JSコードがPHP関数を直接呼び出せると期待しているようですが、それはどのように動作するのでしょうか。あなたのブラウザはサーバーにリクエストを送信し、PHPを一度実行して結果を返します。その結果にJSが含まれていると、ブラウザはPHPが返したものを実行しますが、その時点でPHPコードは完全に終了しています。 – IMSoP

答えて

1

PHPは、あなたのJSコードを生成することができると、あなたは、この試行しAJAXと厄介ではないことを好む場合: `file`は行の配列を返します

のindex.php

<script> 
// Get PHP to create a JS array 
var all_words = <?php echo json_encode(file("words.txt")); ?>; 

// Create a JS function to fetch a random word 
function get_word(){ 
    // Don't go out of bounds and return a word 
    return all_words[Math.floor((Math.random() * (all_words.length - 1)) + 1)]; 
} 

// Call the function and enjoy :) 
document.getElementById("button").innerHTML = get_word(); 
</script> 
+0

words.txtファイルを大きく(約10000語)作ろうと思っています。ユーザー側がスクリプトをバグにすることは望ましくありません。 –

+1

@ AFTX-Star「バグ」を定義してください。あなたはどんな誤りを期待していますか? 10,000語の平均文字数が6文字(6バイト)であれば、わずか60,000バイトまたは60 KBの語句しか扱えません。ほとんどの画像ファイルよりも小さい。 – MonkeyZeus

+0

私は自分のコンピュータ上でスクリプトをホストしたいと思うし、アップロード速度が遅いので、それは良い考えではないと思う。 –