如何在PHP中一次单击一次打印数组

时间:2014-01-06 07:47:13

标签: php arrays primes

我需要打印一个数组(更具体地说是素数),然后点击'一次。我已经创建了素数组,但我不知道如何运行,就像用户点击按钮一样#34;接下来"并显示下一个素数,然后他点击下一个,另一个显示。或者也许有更好的方法呢?

这是素数组:

$primes = array();
for ($x = 2; $x <= 1000; $x++) {
    $xIsPrime = TRUE;
    $sqrtX = sqrt($x);
    foreach ($primes as $prime) if ($prime > $sqrtX || ((!($x % $prime)) && (!$xIsPrime = FALSE))) break;
    if ($xIsPrime) echo ($primes[] = $x)  . "<br>";
}

3 个答案:

答案 0 :(得分:2)

这些事情最好用Javascript完成,但是,既然你的问题被标记为PHP,我写了以下代码:

<?php
$primes = array(2,   3,   5,   7,  11,  13,  17,  19,  23,  29, 
               31,  37,  41,  43,  47,  53,  59,  61,  67,  71, 
               73,  79,  83,  89,  97, 101, 103, 107, 109, 113, 
              127, 131, 137, 139, 149, 151, 157, 163, 167, 173);
// Add as many primes as you wish to the array
$num = array_key_exists("hid", $_POST) ? $_POST["hid"]+1 : 0;
?>
<html>
<head>
<!-- Put your meta tags, title, Javascript and CSS here -->
</head>
<body>
<form method="POST">
<h2><?php print($primes[$num]); ?></h2>
<?php
if(sizeof($primes)-$num > 1){
?>
<input type="hidden" name="hid" value="<?php print($num); ?>"/>
<input type="submit" name="sub" value="Next Prime"/>
<?php
}
else{
?>
<input type="submit" name="sub" value="Next Prime" disabled/>
<?php
}
?>
</form>
</body>
</html>

答案 1 :(得分:0)

您可以使用查询字符串来确定显示素数的数字,并根据该数字找到下一个素数。

$begin = isset($_GET['num']) ? $_GET['num'] : 2;
for ($x = $begin; $x <= 1000; $x++) {
    ...
    if ($xIsPrime) {
        echo $x  . "<br>";
        echo "<a href='...?num=$x'>next</a>";
        break;
    }
}

答案 2 :(得分:0)

您可以使用Ajax,也可以使用PHP进行CRUD系统(每次都需要刷新页面)

Psuedo代码:

假设您的脚本位于/primes.php(这是您所在的页面)

首先 - 因为你的列表是静态的 - 运行脚本并将所有素数输出到数组 - 每次都没有生成它们。

在您的页面上,用户看到您的表单中包含隐藏字段,其中包含最后显示的素数(为方便起见,请说3)。

然后您可以使用action ='primes.php'

将其发布到您的脚本中

获取发布的数据 - 然后只需找到最后一个已知素数的数组中的位置(在这种情况下为3 - 将返回位置1(记住数组为0索引!)

然后只是查询数组中的下一个素数(所以你返回1(假设保持在$lastPrime并且有一个名为$primes的数组只需要'$ primes($ lastPrime +1) ) - 这将为您提供下一个可以再次添加到隐藏字段的素数。)

希望这有助于你解决这个问题。

如果您使用的是Ajax - 完全相同但只是更新隐藏字段或者您可以使用本地javascript变量来存储当前/最后一个值。