2011-10-23 44 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