我在PHP会话中有这个数组,我想一步一步地完成。
如何获取当前数组索引并向前或向后移动一步?这是代码:
for ($i = 0; $ < 10; $i++){
$result_array[] = $i;
}
$_SESSION['theValue'] = $result_array;
我试过了:
$_SESSION['theValue'] [0]++;
一次一步地移动数组,但它只在该索引处显示相同的值。有没有办法可以继续增加索引?
我不确定我是否有多大意义。
答案 0 :(得分:4)
$_SESSION['theValue'] [0]++
实际上会增加数组中的第一个值,而不是递增数组索引。使用数组函数,尤其是key和next来导航数组。
或者,如果要在会话中保留最后一个数组索引,则可能希望将索引存储为单独的会话值。使用count($array)
读取数组的长度。索引从0
到count - 1
。
答案 1 :(得分:3)
如果我正确理解你的问题,你想循环遍历数组,那么你应该做这样的事情:
$size = count($_SESSION['theValue']);
for($i=0; $i < $size; $i++)
{
$currentValue = $_SESSION['theValue'][$i];
}
确保size是一个局部变量,并且你没有在for循环中直接使用count()。
你做$ _SESSION ['theValue'] [0] ++的方法实际上会增加零指数的值。
答案 2 :(得分:1)
init session array
$_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...