关联php数组中的下一个元素

关联php数组中的下一个元素,php,loops,Php,Loops,这看起来很容易,但我想不出来 $users_emails = array( 'Spence' => 'spence@someplace.com', 'Matt' => 'matt@someplace.com', 'Marc' => 'marc@someplace.com', 'Adam' => 'adam@someplace.com', 'Paul' => 'paul@someplace.com'); 我需要获取数组中的下一个元素,但我无法

这看起来很容易,但我想不出来

$users_emails = array(
'Spence' => 'spence@someplace.com', 
'Matt'   => 'matt@someplace.com', 
'Marc'   => 'marc@someplace.com', 
'Adam'   => 'adam@someplace.com', 
'Paul'   => 'paul@someplace.com');
我需要获取数组中的下一个元素,但我无法计算它。。。比如说

如果我有

$users_emails['Spence']
我需要回去matt@someplace.com如果是

$users_emails['Paul'] 
我需要从顶部开始,然后返回spence@someplace.com

我试过这个

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

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

但是它们不会返回我所期望的

您最好将它们存储在索引数组中,以实现所需的功能

reset($array);
while (list($key, $value) = each($array)) { ...
Reset()将数组指针倒带到第一个元素,each()将当前元素的键和值作为数组返回,然后移动到下一个元素

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
要导航,您可以使用
next($array)
prev($array)
reset($array)
end($array)
,同时使用
当前($array)
和/或
键($array)
读取数据

或者,如果您对所有这些对象进行循环,则可以使用foreach

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

你可以这样做:

$users_emails = array(
'Spence' => 'spence@someplace.com', 
'Matt'   => 'matt@someplace.com', 
'Marc'   => 'marc@someplace.com', 
'Adam'   => 'adam@someplace.com', 
'Paul'   => 'paul@someplace.com');

$current = 'Spence';
$keys = array_keys($users_emails);
$ordinal = (array_search($current,$keys)+1)%count($keys);
$next = $keys[$ordinal];
print_r($users_emails[$next]);

但是,我认为您的逻辑可能有错误,您正在做的事情可以做得更好,例如使用foreach循环。

关联数组是否有序?您在键中使用的名称是否为一次性输入,或者,您需要将所有值及其对应的电子邮件一起打印出来吗?可能需要为此创建一个循环链接列表。您必须将数组指针移动到“下一个”和“上一个”,然后自行读取数组函数,并在那里手动迭代数组