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

时间:2011-05-26 16:15:32

标签: 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['Spence']

我需要返回matt@someplace.com,如果是

$users_emails['Paul'] 

我需要从顶部开始并返回spence@someplace.com

我试过这个

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

这也是

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

但他们没有回复我所期待的

3 个答案:

答案 0 :(得分:6)

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),同时使用current($array)和/或{{1}来阅读数据}。

或者你可以使用foreach,如果你遍历所有这些

key($array)

答案 1 :(得分:3)

你可以这样做:

$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循环。

答案 2 :(得分:0)

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