2016-04-25 38 views
0

我有一個撲克遊戲,其中2到5個玩家在按下開始按鈕之前加入遊戲。他們作爲包含用戶名和用戶名的對象添加到玩家陣列數組中。需要通過一個動態大小的數組循環php

我需要填充我的播放器對象currentUser然後點擊一個按鈕(呼叫/升/倍)移動到陣列中的下給遊戲活動座椅的錯覺座位

當啓動按鈕被點擊我將當前用戶設置爲數組中的第一個元素。

$thisPokergame->State['CurrentUser'] = RESET($thisPokergame->State['Players']); 

然後即時如果嘗試這種

if($thisPokergame->State['CurrentUser'] == end($thisPokergame->State['Players'])) 
    { 
     $thisPokergame->State['CurrentUser'] = reset($thisPokergame->State['Players']); 
    } 
    else{ 
     $thisPokergame->State['CurrentUser'] = next($thisPokergame->State['Players']);; 
    } 

作品本身e.g如果陣列中的最後一名選手將它設置當前用戶爲第一,所以做了其他內聲明。

當我把它們放在一起我得到currentuser爲false,我不能看到原因。任何人有解決方案或更好的方法來做到這一點?

+0

爲什麼你不使用變量來跟蹤當前玩家的位置。你從'$ activePosition = 0'開始爲player1,然後使用'$ currentUser = $ thisPokergame-> State ['Players] [$ activePosition];'然後當玩家改變你增加計數器'$ counter = ++ $ counter/5;'如果你有5個玩家。或者,你的「國家」中的位置很重要? – olibiaz

回答

1

你有這個問題,因爲你正在使用的功能移動內部數組指針。

你總是會得到false在有條件的else部分,因爲當你在if條件下使用end($thisPokergame->State['Players']),您已經移動內部數組指針的最後一個元素。然後在else當你做next($thisPokergame->State['Players']),你得到false,因爲沒有更多的元素。

不知道肯定什麼是CurrentUserPlayers我不能確定這到底是怎麼來代替處理,但我認爲這可能工作:

$player = array_shift($thisPokergame->State['Players']); 
$thisPokergame->State['Players'][] = $player; 
$thisPokergame->State['CurrentUser'] = reset($thisPokergame->State['Players']); 

基本上只是旋轉列表中的第一個球員玩家到列表末尾,然後將當前用戶設置爲列表中新的第一個玩家。

+0

是啊,這使得完美sense.is有任何替代方法來做到這一點? –

+0

@stephenreilly我剛剛更新了我認爲可能有效的答案。儘管如此,它還沒有經過測試。只是我的理論。 –

+0

好的,謝謝你在哪裏? –