查找数组索引

时间:2011-10-23 22:47:28

标签: php arrays

我正在用这一块砖打砖墙 - 这是我的代码 - 它意味着有一个前进和后退按钮,允许我单步执行数组。但由于一些奇怪的原因,它只停留在两个数字之间,并拒绝显示数组中的下一个索引。

    //$someArray is an array of ten items.
    $_SESSION['theResult'] = $someArray;

    $prev =  $_SESSION['theResult'] [0]--;
    $next =  $_SESSION['theResult'] [1]++;

    echo "<div id='button_div'>
    <form action='" . $_SERVER['PHP_SELF'] . "'> <input type='hidden' value='" . $prev. "' name=\"id\" /> <input style='float:left;' class='strong_bttn' type='submit' value='<< Previous'></form>

            <form action='" . $_SERVER['PHP_SELF'] . "'><input type='hidden' value='" . $next. "' name='id' /><input style='float:right;' class='strong_bttn' type='submit' value='Next >>'></form></div>";

我想要的是当我按下一个按钮时,按钮移动到数组中的下一个索引,如果按下prev,它会向后移动。但它只是卡在1和0上。

我不知道这段代码是否对任何人都有意义。我只是感到沮丧和厌倦,我只想放弃:(

4 个答案:

答案 0 :(得分:0)

我认为问题在于:

action='" . $_SERVER['PHP_SELF'] . "'

它都发送到当前页面,这就是为什么你只能获得2个值。我假设,在页面启动时,它只显示第一页并链接到第二页。

答案 1 :(得分:0)

为什么在以下代码中确定$ prev和$ next时更改值:

$prev =  $_SESSION['theResult'] [0]--;
$next =  $_SESSION['theResult'] [1]++;

您应该将$ prev和$ next的值基于当前页面使用的值,如下所示:

$prev =  $currentPageId - 1;
$next =  $currentPageId + 1;

答案 2 :(得分:0)

我不确定这是否是问题,但是当你使用++或 - 在变量之后,首先发生赋值,然后变量递增。分配,然后递增。所以你基本上是这样做的:

$prev =  $_SESSION['theResult'] [0];
$_SESSION['theResult'] [0]--;
$next =  $_SESSION['theResult'] [1];
$_SESSION['theResult'] [1]++;

如果要将递增的数字存储到$ prev / $ next变量,请将++ - 放在变量之前。

$prev =  --$_SESSION['theResult'] [0];
$next =  ++$_SESSION['theResult'] [1];

答案 3 :(得分:0)

您是否正在尝试遍历结果数组?如果是,也许这会有所帮助:

<?PHP 
//  is an array of ten items. 
$_SESSION['theResult'] = array('a','b','c','d','e','f','g');
$max = count($_SESSION['theResult']);

if(isset($_GET['prevBttn']))
{
    $prev=($next=$_GET['previous'])-1; 
    if($next==0 ) 
        $prev=0;
    echo $_SESSION['theResult'][$next];
}
elseif(isset($_GET['nextBttn']))
{ 
    $next=($prev=$_GET['next'])+1; 
    if($next ==$max ) 
        $next=$prev;
    echo $_SESSION['theResult'][$next];
}
else{ 
    (int)$prev=$next=key($_SESSION['theResult']);
    echo array_shift($_SESSION['theResult']);
 }  
?>   
<div id='button_div'>
    <form action="<?PHP echo $_SERVER['PHP_SELF'];?>"> 
        <input type='hidden' value="<?PHP echo $prev;?>" name="previous"/> 
        <input type='hidden' value="<?PHP echo $next;?>" name='next' />
        <input style='float:left;' name="prevBttn" class='strong_bttn' type='submit' value='<< Previous'>
        <input style='float:right;' name="nextBttn" class='strong_bttn' type='submit' value='Next >>'>
    </form>
</div>