2011-06-20 10 views
11

tengo una matrizObtiene el siguiente elemento de la matriz usando el php clave

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

¿cómo puedo obtener el siguiente elemento de la matriz por el que pasa la clave.

por ejemplo, si tengo la clave 9, entonces debería obtener test3 como resultado. si tengo 1, entonces debería devolver 'test2' como resultado.

Editado para que sea más clara

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

creo que esto es un duplicado. Verifique esta pregunta -> http://stackoverflow.com/questions/6141717/next-element-in-a-associative-php-array – Nobita

Respuesta

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

O:

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

Es difícil devolver el resultado correcto con el segundo método si el buscado clave no existe . Usar con precaución.

+0

¡Me gusta la primera solución! Hermosa. – Nobita

+2

@Nobita @deceze Bien, pero me pregunto qué pasará si la clave $ no se encuentra en $ array. ¿No crearía eso un ciclo infinito? –

+0

@Berry Buena captura, agregó un cheque en contra de eso. – deceze

-1

Puede imprimir la siguiente manera: -

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

No estoy seguro de que pueda funcionar. – Karolis

+0

@Karolis Puede ser que lo escriba rápidamente ... :) – Bajrang

0

Puede utilizar siguiente(); función, si solo quieres obtener el siguiente elemento de la matriz.

<?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'; 
?> 

actualización

y si desea comprobar y utilizar ese elemento siguiente existes puede probar:

crear una función:

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

Llámelo:

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

Fuente: 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>"); 
} 
Cuestiones relacionadas