siguiente elemento en una matriz php asociativa

Esto parece tan fácil pero no puedo entenderlo

$users_emails = array( 'Spence' => '[email protected]', 'Matt' => '[email protected]', 'Marc' => '[email protected]', 'Adam' => '[email protected]', 'Paul' => '[email protected]'); 

Necesito obtener el siguiente elemento en la matriz pero no puedo resolverlo … así que por ejemplo

Si tengo

 $users_emails['Spence'] 

Necesito devolver [email protected] y si es

 $users_emails['Paul'] 

Necesito comenzar desde arriba y regresar a [email protected]

intenté esto

 $next_user = (next($users_emails["Spence"])); 

y esto también

  ($users_emails["Spence"] + 1 ) % count( $users_emails ) 

pero no devuelven lo que estoy esperando

 reset($array); while (list($key, $value) = each($array)) { ... 

Reset () rebobina el puntero de la matriz al primer elemento, cada uno () devuelve la clave y el valor del elemento actual como una matriz y luego pasa al siguiente elemento.

 list($key, $value) = each($array); // is the same thing as $key = key(array); // get the current key $value = current($array); // get the current value next($array); // move the internal pointer to the next element 

Para navegar puede usar next ($ array), prev ($ array), reset ($ array), end ($ array), mientras que los datos se leen usando current ($ array) y / o key ($ array).

O puede usar foreach si pasa por encima de todos ellos

 foreach ($array as $key => $value) { ... 

Podrías hacer algo como esto:

 $users_emails = array( 'Spence' => '[email protected]', 'Matt' => '[email protected]', 'Marc' => '[email protected]', 'Adam' => '[email protected]', 'Paul' => '[email protected]'); $current = 'Spence'; $keys = array_keys($users_emails); $ordinal = (array_search($current,$keys)+1)%count($keys); $next = $keys[$ordinal]; print_r($users_emails[$next]); 

Sin embargo, creo que es posible que tenga un error en su lógica y lo que está haciendo se puede hacer mejor, como usar un ciclo foreach.

Sería mejor almacenarlos en una matriz indexada para lograr la funcionalidad que está buscando