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

3
这似乎很容易,但我想不出来。
$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 )

但是它们没有返回我期望的结果。

关联数组是否有序? - Hyperboreus
你在使用的键名是一次性输入,还是需要打印出所有值及其对应的电子邮件? - tkm256
可能需要为此创建一个循环链表。 - Wiseguy
你需要自己移动数组指针并阅读数组函数以了解如何手动迭代数组。 - Khurram Ijaz
3个回答

7
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) { ...

4
你可以像这样做:

你可以像这样做:

$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循环等更好的方法来完成。


0

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接