问题描述
|
这似乎很简单,但我无法弄清楚
$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)
,同时使用current($array)
和/或key($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循环。
,您最好将它们存储在索引数组中,以实现所需的功能