2016-08-08 9 views
1

私はちょうどこのイメージ配列($ images)を持っています、そして、私は与えられたキーによってこのイメージをループしたいと思います。PHP配列のループキーの一致

$images = array(0=>'image1', 1=>'image2', 2=>'image3'); 

このページネーションがあることを仮定し、私は、各ページに移動するときには、ページ番号の画像キーと一致し、画像を返す必要があります。指定されたイメージキーが存在しない場合は、最初のイメージが返されます。私はセッションでページ番号を持っており、これは私がこれまでにやったことです。

/*Default $key = 1;*/ 
$key = $_SESSION['page']; 
$count = count($images); 

$key = $SESSION['key'] = (array_key_exists($key-1, $images)) ? $key : ($_SESSION['key'] > $count? 1 : $_SESSION['key']+1); 

$this_image = $images[$key-1]; 

これはページを通過するときにイメージをループしますが、以下のように動作します。

ページ1>キー0、ページ2>キー1、ページ3>キー2、ページ4>キー0、ページ5>キー1、ページ6>例えばキー2

、私が行く場合5ページ目にはイメージ配列のイメージ2が返されます。

私はこれが意味を持ち、あなたの助けに感謝したいと思います。

ありがとうございました。

ヘマン

+0

使用 '%' didvideと余りをチェック。 –

+0

私はあなたのシステムがどのように動作するかわからないので、これはちょっと混乱していると思います... – Snickbrack

答えて

0

コードにいくつかの問題があります。 $key - 1が存在する場合、それは$key - 1する必要がありながら、一つは$keyを返して:

$key = (isset($images[$key - 1])) ? $key - 1 : ($key > $count ? $key - $count - 1 : 0); 
3
$total = count($images); 
$remainder = $page%$total; 
echo $key = ($remainder == 1) ? 0 : (($remainder == 2) ? 1 : 2); 
+0

これは配列数が3に等しい場合に機能します。動的配列で作業するには少し修正する必要があります。良いもの。 Tnx –

1

はこれを試してみてください:これはどのシナリオに働くだろう

($key > $count) ? $key = $key%$count : $key = $key-1; 
+0

これは良い見えます。 '$ key%$ count = 0'の例では負の値になります:' 6%3-1 = -1' –

+0

@Hemanあなたは正しいです、私はそれを編集しました。私は-1が真実である必要はありません:d。ありがとう! –

-1

$images = array(0=>'image1', 1=>'image2', 2=>'image3'); 
$count = count($images); 
$remainder = $key%$count; 
$remainder = ($remainder == 0) ? $count-1 : ($remainder - 1); 
($key > $count) ? $key = $remainder : $key = $key-1; 

M.I @へとuser1234とも提案のため、他のみんなありがとう@感謝:)

関連する問題