2012-03-21 12 views
0

私は次の値を取得する配列を持っています。PHP配列の次の値を取得

$sorting = array(0 => "H 101", 1 => "S 101", 2 => "R 172", 3 => "D 141", 4 => "T 101", 5 => "K 101", 6 => "A 182", 7 => "G 101"); 

私はSELECT文から取得した現在の値を持っています。私はarray_searchを試みたが、私はそれが私が欲しいと思うようにすることはできない。

私の現在の値がS 101だとしたら、新しいSELECT文で使用できる次の値として "R 172"を与えるにはどうすればいいですか?

また、現在の値が最後の値(G101)であれば、最初の値(H101)に戻ってほしい。

答えて

4

なぜインデックスを明示的に指定しましたか?あなたがそれをしていないと、これは同じになるでしょう。

私が理解するところでは、array_searchはあなたが望むものに適しています。私が正しくあなたを理解していれば

$current = 'S 101'; 
$nextkey = array_search($current, $sorting) + 1; 
if($nextkey == count($sorting)) { 
    // reached end of array, reset 
    $nextkey = 0; 
} 

$next = $sorting[$nextkey]; 

ただし、この配列をループしてその上でクエリを作っています。より良い解決法があるかもしれないので、クエリーの結果に関してあなたが望むものを掲示するのはどうですか?(IN()

+0

これは私が達成したい正確に何を行います!どうもありがとうございました。 私が欲しいのは、単に製品の表示ページで次のリンクを生成することです。それで私は次のアイテムに移動できます。 –

+0

ああ、私はあなたがここでやったことは、かなり正しいことです。 :) – deed02392

+0

私はプロダクション環境に入れただけで完璧に動作しますので、どうもありがとうございます:) –

0

あなたがあなたの配列の終わりに行くつもりはなく、

$sorting = array(0 => "H 101", 1 => "S 101", 2 => "R 172", 3 => "D 141", 4 => "T 101", 5 => "K 101", 6 => "A 182", 7 => "G 101"); 

$key = array_search("H 101", $sorting); 
$returnValue = $sorting[$key + 1]; 
1

は、運用上、あなたはよ、あなたは、配列のサイズがわからない場合は、myNewValue = $sorting[($key+1)%8]を行うか、すべき

その後

$key = array_search($currValue, $sorting);

そのように、あなたの現在の値のインデックスをretrive可能性あなたがしなければならないmyNewValue = $sorting[($key+1)%(count($sorting)+1)]

6

next()とprev()は、スクリプトが処理中に配列の内部ポインタを扱います。

$current_index = array_search($current_id, $array); 

// Find the index of the next/prev items 
$next = $current_index + 1; 
$prev = $current_index - 1; 

あなたのHTML:

<?php if ($prev > 0): ?> 
    <a href="<?= $array[$prev] ?>">Previous</a> 
<?php endif; ?> 

<?php if ($next < count($array)): ?> 
    <a href="<?= $array[$next] ?>">Next</a> 
<?php endif; ?>