3

每次我单击下一个按钮时,它都会卡在数组中已搜索的第一个元素中。这是我的示例代码:

<?php

$letter = 'A';

if (isset($_POST["next"])) 
{
    if(isset($next))
    {
        unset($letter);
        $letter = $next;
    }

    $alphabet = array('A', 'B', 'C', 'D', 'E');

    $get = array_search($letter, $alphabet);

    $next = $alphabet[$get + 1];

    echo $next;
}

?>

<form name="alphabet" method="post"> 
<input type="submit"  name="next" value="next"/>
</form>

输出是:

B

我想要的输出是:

A-> B-> C-> D

每次单击下一个按钮时如何转到每个下一个元素&如果显示的最后一个元素我希望它转到数组中的第一个元素,就像它循环到第一个元素一样。我不想使用 $_GET 我想要一个 $_POST。请帮我解决这个问题?谢谢你。

4

2 回答 2

3

尝试这个。您需要将变量发布回脚本,以便在每次页面加载时,它可以知道之前的值是什么。

<?php
        $letter = 'A';

        if (isset($_POST["letter"]))
        {
            $letter = $_POST["letter"];

            $alphabet = array('A', 'B', 'C', 'D', 'E');

            $get = array_search($letter, $alphabet);

            if($get < (count($alphabet) - 1))
            {
                $get++;
            }
            else
            {
                $get = 0;
            }

            $letter = $alphabet[$get];

            echo $letter;
        }

        ?>

        <form name="alphabet" method="post">
            <input type="hidden"  name="letter" value="<?php echo $letter ?>" />
            <input type="submit"  value="next" />
        </form>

编辑:添加了对索引变量的检查$get,仅当它不在数组末尾时才增加,否则它应该重置。

于 2013-10-17T21:20:11.153 回答
1

尝试这个。我们将当前字母作为隐藏的 post 变量传递。

<?php

$alphabet = array('A', 'B', 'C', 'D', 'E');
$next = 'A';   //for the first call of page.
if (isset($_POST["next"])) 
{

    $letter = $_POST['letter'];

    $get = array_search($letter, $alphabet);

    $next = $alphabet[($get + 1)%count($alphabet)];  //for loop over array

}

echo $next;
?>

<form name="alphabet" method="post"> 
<input type="hidden"  name="letter" value="<?php echo $next;?>"/>
<input type="submit"  name="next" value="next"/>
</form>
于 2013-10-17T21:09:15.113 回答