php diziler next () ve prev ()

5 Cevap php

Ben bu gibi görünen bir dizi var,

    Array
(
    [0] => 849710414
    [1] => 849710726
    [2] => 849710744
    [3] => 849712728
    [4] => 849713005
    [5] => 849713439
    [6] => 849714856
    [7] => 849714924
    [8] => 849716371
    [9] => 849716441
    [10] => 849717118
    [11] => 849719043
    [12] => 849719187
    [13] => 849722865
    [14] => 849723412
    [15] => 849723777
    [16] => 849725052
    [17] => 849726294
    [18] => 849726457
    [19] => 849726902
    [20] => 849728239
    [21] => 849728372
    [22] => 849728449
    [23] => 849730353
    [24] => 849733625
)

Bunlar sitenin etrafında gezinmek için bir URL'ye eklemeniz gerekir kimlikleri vardır, kimlikleri bir kullanıcının arama döndü olsun sonuçlar, kullanıcı daha sonra bir arama sonucu tıklar ve sonraki arama sonucuna gitme seçenek var şimdi ben gerçi yaparak, bunu yapmak mümkün olacaktır, bir önceki bakmak

<a href="<?=next($array);?>">Next</a>
<a href="<?=prev($array);?>">Prev</a>

Nasıl bugüne kadar ben bakıyorum şu anki sonuç kimliği sonraki ve önceki ne çalışmak ne olduğunu tanımak için görünmüyor? Herkes şimdi bunu nasıl çözebilir mi?

5 Cevap

$ + 1 current_index ve $ current_index kullanma - Dizi anahtarları sıralı değilse 1 çalışmayabilir. Burada geçerli birine bir dizi anahtar akraba bulmak için daha iyi bir yoludur.

function array_key_relative($array, $current_key, $offset = 1, $strict = true) {
  // create key map
  $keys = array_keys($array);
  // find current key
  $current_key_index = array_search($current_key, $keys, $strict);
  // return desired offset, if in array, or false if not
  if(isset($keys[$current_key_index + $offset])) {
    return $keys[$current_key_index + $offset];
  }
  return false;
}

Ben önceki ve sonraki düğmeleri için oldukça yararlı bu işlevi bulmak ve bir çok kullanırım.

Tabii ki, şimdi size her sayfa yükleme arama yapabilirsiniz böylece url arama terimleri tutmak için ihtiyacımız olacak. Böyle bir şey:

http://www.example.com/search/?s=some+search&row=4

... Sonra arama yapmak ve sonuç sayısını 4 gösterilecek Sizin önceki ve sonraki düğmeleri satır sayısını başvuru ve böyle bir şey yapmak istiyorum.:

$previous_key = array_key_relative($search_results, $current_row, -1);
$next_key = array_key_relative($search_results, $current_row, 1);

İşte bunu yapmak gerekir.

PHP diziler dahili bir işaretçi içerir. Bu işaretçi geçerli öğe izler. Eğer yeni bir dizi oluşturduğunuzda gösterici dizideki ilk öğe olduğunu. next() çağrılması ve prev() geriye gösterici ileriye taşımak ve. Ben ne yapmak istediğinizi olduğunu sanıyorum:

<a href="<?php echo $array[$id + 1]; ?>">Next</a>
<a href="<?php echo $array[$id - 1]; ?>">Prev</a>

O $id kontrol etmiyor gibi bu basitleştirilmiş bir örnektir, $id - 1 veya $id + 1 geçerlidir.

php docs for current() bir göz atın. Bu dizi göstericiler nasıl çalıştığını açıklar.

Ben belirli bir yerde işaretçiyi ayarlamak için arıyoruz sanırım. Orada bunun için kutu hiçbir işlev dışında olduğunu ve böyle bir şey ile elle yapmak zorunda olacak:

function set (&$array,$key) { 
    reset ($array); 
    while (key($array) !== $key) { 
        if (next($array) === false) throw new Exception('Invalid key'); 
    } 
} 

$array = array(4=>'a',2=>'b',0=>'c',9=>'d'); 
set($array,2); 
echo current($array);
echo next($array)

Bir sonraki () ve ardından son () ararsanız, başladığınız yere geri sensin. Bu işlevler eleman akım () için bir çağrı tarafından döndürülen belirler dizide bir iç getirin.

Ne muhtemelen yapmak istiyorum Şunu $ i depolanan diyelim, size konum sayfa için kimlik endeksi bir başvuru tutun ve daha sonra böyle bir şey yapmak olduğunu:

<a href="<?=$array[$i + 1]?>">Next</a>
<a href="<?=$array[$i - 1]?>">Prev</a>

Uygun dizi sınırları denetleme, tabii.