2011-06-20 12 views
11

Mam tablicęGet następny element tablicy za pomocą klawisza php

Array(1=>'test',9=>'test2',16=>'test3'... and so on); 

jak mogę dostać następny element tablicy, przekazując klucz.

na przykład, jeśli mam klucz 9, wtedy powinienem otrzymać test3 jako wynik. jeśli mam 1, powinien powrócić 'test2' jako wynik.

Edited by uczynić go bardziej jasne

echo somefunction($array,9); //result should be 'test3' 
function somefunction($array,$key) 
{ 
    return $array[$dont know what to use]; 
} 
+0

myślę, że to jest duplikatem. Sprawdź to pytanie -> http://stackoverflow.com/questions/6141717/next-element-in-a-ocociative-php-array – Nobita

Odpowiedz

24
function get_next($array, $key) { 
    $currentKey = key($array); 
    while ($currentKey !== null && $currentKey != $key) { 
     next($array); 
     $currentKey = key($array); 
    } 
    return next($array); 
} 

Lub:

return current(array_slice($array, array_search($key, array_keys($array)) + 1, 1)); 

Trudno jest wrócić poprawny wynik z drugiej metody, jeśli szukał klucza nie istnieje . Używaj ostrożnie.

+0

Podoba mi się pierwsze rozwiązanie! Piękny. – Nobita

+2

@Nobita @deceze Nice, ale zastanawiam się, co się stanie, jeśli $ key nie zostanie znaleziony w tablicy $? Czy nie stworzy to nieskończonej pętli? –

+0

@Berry Good catch, dodano do tego kontrolę. – deceze

-1

Można drukować tak: -

foreach(YourArr as $key => $val) 
{ echo next(YourArr[$key]); 
    prev(YourArr); } 
+1

Nie jestem pewien, czy to działa. – Karolis

+0

@Karolis Być może napisałem to szybko .. :) – Bajrang

0

Można użyć next(); funkcja, jeśli chcesz po prostu uzyskać następny nadchodzący element tablicy.

<?php 
$transport = array('foot', 'bike', 'car', 'plane'); 
$mode = current($transport); // $mode = 'foot'; 
$mode = next($transport); // $mode = 'bike'; 
$mode = next($transport); // $mode = 'car'; 
$mode = prev($transport); // $mode = 'bike'; 
$mode = end($transport);  // $mode = 'plane'; 
?> 

Aktualizacja

i jeśli chcesz sprawdzić i wykorzystać tę następny element istnieją można spróbować:

Utwórz funkcję:

function has_next($array) { 
    if (is_array($array)) { 
     if (next($array) === false) { 
      return false; 
     } else { 
      return true; 
     } 
    } else { 
     return false; 
    } 
} 

nazywają go:

if (has_next($array)) { 
    echo next($array); 
} 

Źródło: php.net

0
$array = array("sony"=>"xperia", "apple"=>"iphone", 1 , 2, 3, 4, 5, 6); 

foreach($array as $key=>$val) 
{ 
    $curent = $val; 
    if (!isset ($next)) 
     $next = current($array); 
    else 
     $next = next($array); 
    echo (" $curent | $next <br>"); 
} 
Powiązane problemy