我需要打印一个数组(更具体地说是素数),然后点击'一次。我已经创建了素数组,但我不知道如何运行,就像用户点击按钮一样#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>";
}
答案 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变量来存储当前/最后一个值。