2011-05-26 118 views
2

這看起來很容易,但我不能弄明白下一個元素

$users_emails = array(
'Spence' => '[email protected]', 
'Matt' => '[email protected]', 
'Marc' => '[email protected]', 
'Adam' => '[email protected]', 
'Paul' => '[email protected]'); 

我需要得到下一個元素的數組中,但我不能圖出來......因此,例如

如果我有

$users_emails['Spence'] 

我需要返回[email protected],如果它的

$users_emails['Paul'] 

我需要從頂部開始並返回[email protected]

我想這

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

,這也

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

,但他們不回什麼,我期待

+0

關聯數組是否有序? – Hyperboreus 2011-05-26 16:20:00

+0

您在密鑰中使用的名稱是一次性輸入,還是需要使用相應的電子郵件打印所有值? – tkm256 2011-05-26 16:20:11

+0

可能想爲此創建一個循環鏈表。 – Wiseguy 2011-05-26 16:21:52

回答

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 

要導航可以使用下一個($陣列),一個先前($陣列),復位($陣列),端部($陣列),而數據是使用電流($陣列)讀取和/或關鍵($數組)。

或者,如果您遍歷所有的人都可以使用的foreach

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

你可以做這樣的事情:

$users_emails = array(
'Spence' => '[email protected]', 
'Matt' => '[email protected]', 
'Marc' => '[email protected]', 
'Adam' => '[email protected]', 
'Paul' => '[email protected]'); 

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

不過我想你可能在你的邏輯和你有一個錯誤你正在做的事情可以做得更好,比如使用foreach循環。