这似乎很容易,但我无法弄清楚
$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 )
但他们没有回复我所期待的
答案 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)
您最好将它们存储在索引数组中,以实现您正在寻找的功能