0

配列を格納するページにセッションがあります

<?php session_start();
if (!isset($_SESSION['pages'])) {
$_SESSION['pages'] = array();
array_push($_SESSION['pages'],$description);
}
print_r($_SESSION['pages']);
?>

最初の配列を書き換える前に、配列を 3 つの説明のみに制限する方法はありますか。例えば

array[0] => page1
array[1] => page2
array[2] => page3

いいえ、4ページにアクセスしたときに、1を書き換えて3つのレコードを保持するだけなので、次のようになります

array[0] => page4
array[1] => page2
array[2] => page3

これが可能かどうかはわかりません!

4

2 に答える 2

0

私の知る限り、新しいクラスを作成すれば可能です。そのクラスは、メンバーとしてリストとインデックスを持つことができます。

my_class_push を呼び出すと、要素を現在のインデックスにプッシュしてインクリメントできます。index==3 の場合は、再度 0 に設定します。

それは理にかなっていますか?

または、インデックスをセッション変数に保存してから、セッションのインデックス変数を取得して必要な割り当てを行い、セッション インデックス変数を変更する独自のプッシュ関数を作成することもできます。

于 2012-09-18T22:04:17.883 に答える
0

単なる配列なので、非常に単純です。

ただし、代わりに、要素が 3 つ以上ある場合は、最初に要素を追加し、最後に 1 つ削除します。

session_start();
if (!isset($_SESSION['pages']))
{
  $_SESSION['pages'] = array();
}

// add an element at the start
array_unshift($_SESSION['pages'], $description);

// remove an element at the end
if (count($_SESSION['pages']) > 3)
{
  array_pop($_SESSION['pages']);
}

print_r($_SESSION['pages']);

そうすれば、注文は常に同じです (最後、前、2 前)。

于 2012-09-18T22:06:51.277 に答える