0

さて、私は、本質的に、XML ファイル内の要素への参照で配列を埋め、配列に対して shuffle() を実行して配列をランダム化し、配列を循環させて配列からのデータを表示する PHP アプリを作成しました。 (そしてXMLファイルも)画面に表示されます。

現在のコードは問題なく動作します。配列を埋めてシャッフルし、0 番目のインデックス (これはランダムです) を表示します。私の問題は、配列内のデータを失うことなく、ページのコンテンツを動的にリロードできるようにしたいが、別のページにリンクしたくないという事実にあります。より具体的には、ボタンをクリックするだけで配列を循環できるようにしたいと考えています (ページを完全にリロードせずに、配列内の貴重なデータを失うことはありません)。

非表示のフォーム フィールドを使用して、配列の値を一時配列にロードし、ページのリロード時にそれらをフィードバックしようとしましたが、役に立ちませんでした。私はこの方法で多くのバグを見つけました。

基本的に、コードで次のようなことをしたい:

$heaps_array = array(...); // Populated by, let's say 3 strings, for argument's sake
shuffle($heaps_array);
echo $heaps_array[0];
// User clicks the Next button...
// Get rid of the $heaps_array[0] from the page content, and...
echo $heaps_array[1];
// User clicks the Next button...
// Get rid of the $heaps_array[1] from the page content, and...
echo $heaps_array[2];
// User clicks the Next button...
...
4

4 に答える 4

0

PHPにはリクエストベースのインタプリタ言語があるため、サーバーから何かが必要になるたびにスクリプトを実行する必要があります。ストレージエンジン(memcached、MySQL、名前を付けます)を使用せずに、これらの配列を常にメモリに保持することはできません。

他の人が言っているように、配列をフロントエンドに送信してJavaScriptで操作することができます。そうすれば、サーバーをロードしてすべてのデータをメモリに保存する必要がなくなります。

于 2013-02-26T03:13:35.810 に答える
0

アレイをクライアント側に送信することはできませんか(ajaxではなくダーティな方法)?次に、jsで値を表示します。

つまり:

echo 'var array = new Array('.implode(',', $array).');';

それ以外の場合は、より高度なメソッドが必要になります。ミニWebサービスを構築し、AJAXクエリを介して値を取得するのが最善です。

于 2013-02-26T03:15:00.867 に答える
0

ここにはいくつかのオプションがありますが、PHPはサーバー側の言語であり、ブラウザーがページのコンテンツを表示する前に実行および終了することを理解する必要があります。動的コンテンツを実行するには、javascriptとajaxが関係します。AJAX呼び出しを簡単にするjQueryなどのjavascriptフレームワークをお勧めします。

それを行うためのいくつかの方法:

1)php配列全体をページ上のjavascript変数に出力します。javascriptを使用してすべての配列の並べ替えを行います。AJAXはありません。

2)phpを使用して配列をソートし、セッション変数に格納します。AJAXを使用して、セッションメモリ内の配列から新しいデータを要求し、必要に応じて配列を再利用して、必要な値を返します。

3)AJAX呼び出しを使用して、ソートされたPHP配列全体を要求して返します。あなたが望むようにそれを行うためにjavascriptを使用してください。

返したいデータのサイズによっては、AJAXとクライアント側の処理によるデータ要求の量を最小限に抑え、PHPを使用してすべての配列処理を実行し、必要な正確な値を返すことができます。

于 2013-02-26T04:02:00.717 に答える
0

誰も持っていないので、PHPのセッション管理をそこに投げるだけです。 http://php.net/session_start

于 2013-02-26T04:17:22.547 に答える