1

配列に格納するセッションがあり、その人が同じページにアクセスしても配列に追加されず、配列の値が空の場合は結果がエコーされない場合、これはどうすればよいか疑問に思いました。例

$SESSION['image'][0] => page1

彼らはpage1にアクセスしたので、ログに記録されます。ここで、ページに戻ると、配列は次のようになります。

$SESSION['image'][0] => page1
$SESSION['image'][1] => page1

また、最後にアクセスした3ページのタイトルとサムネイル画像をエコーアウトしましたが、履歴をクリアした場合、または初めてサイトにアクセスした場合、配列にデータがないため、画像が壊れています。これは私が試したことです

if(!empty($_SESSION['image'][1]) {
echo ' <div>$_SESSION[/'image/'][1]</div>
}

これを使用して、最初の4つの配列を更新し続けます

if (!isset($_SESSION['image']))
{
$_SESSION['image'] = array();
}
array_unshift($_SESSION['image'], $rentals['Image']);
if (count($_SESSION['image']) > 4)
{
array_pop($rentals['Image']);
}

ただし、配列を4つの値に保ち、4以降の値をダンプするためのより良い方法はありますか?

うわー、これは長い質問になりました、私の謝罪:-/

4

2 に答える 2

1

array_slice関数は、配列のサイズを制限内に保つために必要なものだと思います。これをチェックしてください:

<?php 
$a = array(1);
print_r(array_slice($a, -4));

$a = array(1, 2, 3, 4, 5);
print_r(array_slice($a, -4));
于 2012-09-19T18:54:45.317 に答える
0

in_arrayを使用して画像配列をチェックし、値がまだ設定されていないことを確認します。また、配列が4以上の場合は、何も設定しないでください。

if (!in_array($SESSION['image'], $page) && count($SESSION['image']) <= 4) {
    $SESSION['image'][] = $page;
}
于 2012-09-19T19:03:30.790 に答える