2011-10-23 69 views
1

我在PHP會話中有這個數組,我一次只需要一步。在PHP會話變量中增加數組值

如何獲取當前數組索引並向前或向後移動一步?下面的代碼:

for ($i = 0; $ < 10; $i++){  
    $result_array[] = $i; 
} 

$_SESSION['theValue'] = $result_array; 

我嘗試:

$_SESSION['theValue'] [0]++; 

到一次移動的陣列的一個步驟,但它僅顯示索引處的相同值。有沒有辦法可以不斷增加索引?

我不確定我是否合理。

+0

*將陣列一次移動一步*這行代表什麼意思? –

回答

1

初始化會話陣列

$_SESSION['theValue'] = $result_array; 
$_SESSION['currentIndex'] = 0; 

創建按鈕下一首/上這樣

$prev = $_SESSION['currentIndex'] == 0 ? 0 : $_SESSION['currentIndex'] - 1; 
$next = $_SESSION['currentIndex'] == sizeof($_SESSION['theValue']) ? $_SESSION['currentIndex'] : $_SESSION['currentIndex'] + 1; 

,並要去一個/上一個頁面,只需增加/減少$_SESSION['currentIndex']


用例:
所以當你創建鏈接如下:

<a href="index.php?page=1">Next</a> 
<a href="index.php?page=0">Prev</a> 

你需要捕捉的$_GET['page']值,並將其保存渲染內容之前CURRENTINDEX會話屬性。

if(isset($_GET['page'])){ 
    if(is_numeric($_GET['page']){ 
     if($_GET['page'] >= 0 && $_GET['page'] <= sizeof($_SESSION['theValue'])){ 
      $_SESSION['currentIndex'] = $_GET['page']; 
     } 
    } 
} 
// place code which works with 'currentIndex' and array in session here... 
+0

謝謝你的代碼,但當我按下prev和next時,我只是繼續得到1和0。它不會增加超過1.任何想法?再次感謝。 –

+0

,你是否將當前值保存到'currentIndex'會話屬性?你必須在頁面重新載入時保存這個變量 –

+0

再次感謝,但我該如何保存currentIndex並引用它?原諒我的問題。 –

3

如果我正確理解你的問題,你要遍歷數組,那麼你應該做這樣的事情:

$size = count($_SESSION['theValue']); 
for($i=0; $i < $size; $i++) 
{ 
    $currentValue = $_SESSION['theValue'][$i]; 
} 

確保大小是一個局部變量和不使用計數(直接)在for循環中。

您執行$ _SESSION ['theValue'] [0] ++的方法實際上會增加零索引處的值。

3

$_SESSION['theValue'] [0]++實際上遞增數組中的第一個值,而不是遞增數組索引。使用陣列功能,尤其是keynext,可以瀏覽數組。

或者,如果您想保留會話中的最後一個數組索引,您可能需要將索引存儲爲單獨的會話值。使用count($array)讀取陣列的長度。指標從0count - 1