2017-01-24 3 views
-5

私はこの配列をPHPコードで持っています。私はページが呼び出されるたびに最初の配列インデックスの値を出力する必要があり、次回は配列インデックスの2番目の値などを変更する必要があります。今のところ一度だけ呼び出されるとすべてが印刷されます。配列インデックス増分

<html> 
<?php 
$addresses = array('ifcbxespra', 'ifcheqjbmea', 'ifcqiknsa', 'ifcqirtjla', 'ifcwqsrlmn', 'ifclmkmzhz','ifcwdujhgc','ifcihddngh','icffhzudcd','ifchnsqzgs','ifcgssqrhg'); 

foreach ($addresses as &$value) { 
    echo $value ; 
} 
?> 
</html> 
+3

呼び出されたときをどのように追跡するように提案しますか?それは何回呼ばれていますか?同じ訪問者がページを呼び出す場合にのみ増分しますか?または、ユーザーAがそれを表示してから最初にインクリメントしたい場合は、ユーザーBがそれを表示した場合に再度インクリメントします。 –

+0

したがって、自分自身であなたの要件を達成しようとする試みは一切ありませんでした。これは私のための_doですそれは自動的に乱数が呼び出され、印刷されている一意性がないようにarray_rand関数を使用していた前に私は質問の右の – RiggsFolly

+0

@ cale_b yesssです。 yess配列のサイズとして11倍にしたいと思っています。ユーザーAがそれを見たときに言ったように、ifcbxespraを、そしてユーザーBがifcheqjbmeaである次の値を訪れたときに。 – Rocky

答えて

0

最後に私はこの問題をMySQLで解決しました。すべてのコードを含む列を作成しました。ユーザーがボタンを押すたびにスクリプトを呼び出します。スクリプトではまず最初にrawを取得してその値を出力し、そのrawを削除します。だから毎回のユーザーはコードのリストから一意の価値を得るでしょうそしてそれはうまくいきます。

1

あなたは$_SESSIONようなものを使用し、そこに最後のindexを保存することができます。例えば

$array = array('one', 'two', 'three'); 

if (!$_SESSION['nextIndex'] || $_SESSION['nextIndex'] >= count($array)) { 
    $_SESSION['nextIndex'] = 0 
} 

// print the value 
echo $array[$_SESSION['nextIndex']]; 

// increment the nextIndex 
$_SESSION['nextIndex']++; 

注:これは、同じユーザーのために動作します。各ページのリロードは配列インデックスをインクリメントします。しかし、クロスユーザカウントが必要な場合は、DBや単純なtxtファイルのように、サーバ上のどこかに情報を格納する必要があります。

は、この例をチェックアウト:http://hibbard.eu/how-to-make-a-simple-visitor-counter-using-php/

+0

これはOPのコメントに基づいて動作しません。これは、どのユーザーがページを見ているかを考慮して変更する必要があります。ユーザーAが見える場合、最初のエントリ、次にユーザーBが見える場合は2番目のエントリなどが必要です。$ _SESSIONは異なるユーザーやブラウザには格納されません。 –

+0

@cale_b thx、私はコメントを追加しました。 – webdeb

1

は、私はあなたが欲しいものを理解している場合はわかりません。

<?php 
if(!isset($addresses) || empty($addresses)){ //checks if the array is not initialized or if it's empty 
    $addresses = array('ifcbxespra', 'ifcheqjbmea', 'ifcqiknsa', 'ifcqirtjla', 'ifcwqsrlmn', 'ifclmkmzhz','ifcwdujhgc','ifcihddngh','icffhzudcd','ifchnsqzgs','ifcgssqrhg'); 
    echo $addresses[0]; //print the first value 
    array_splice($addresses, 0, 1); //removes the first element of the array and reindexes it 
}else{ 
    echo $addresses[0]; //print the first value 
    array_splice($addresses, 0, 1); //removes the first element of the array and reindexes it 
} 

それは、論理尻::もしあなたが最初の配列の値を印刷したい場合は、ページのロード1時間、二番目の配列の値は、ページがように別の時間をロードしたときにする場合しかし、あなたはこれを行うことができます配列は既に存在し、空ではなく(値を持っています)、最初の値を出力してから削除するので、次回は最初の値が2番目の実際の値になります。配列が空の場合は、再度開始するように配列を再定義します。

array_splice()hereについてさらに詳しく調べることができます。

P.S .: PHP's $_SESSIONを使用してページ間の配列を保存する必要があります。

+0

これはOPのコメントに基づいて動作しません。これは、どのユーザーがページを参照するかを考慮して変更する必要があります。ユーザーAが見える場合、最初のエントリ、次にユーザーBが見える場合は2番目のエントリなどが必要です。$ _SESSIONは異なるユーザーやブラウザには格納されません。 –

関連する問題