在PHP中计数的一些新手问题

时间:2016-08-05 16:31:47

标签: php

请告诉我,我做错了什么,我应该如何解决这个问题。

我正在尝试创建一个简单的计数器,它将依赖于每次访问(页面)加1,并在数字为5时停止。但这不起作用 - 每次返回相同的数字。< / p>

$x = 1;

while($x <= 5) {
    echo "The number is: $x <br>";
    $x = $x++;
    break;
}

3 个答案:

答案 0 :(得分:1)

你有3个问题。

  1. 您有一个break,它会终止循环
  2. $x++;是一个独立的声明。您不需要将$x设置为
  3. 计数器将在两次通话之间重置。 PHP不知道这是你的第一次还是第40次。因此,如果要保留它,则需要将其存储在某处(即数据库或会话)
  4. 试试这个

    session_start();
    
    if(!isset($_SESSION['visit'])) $_SESSION['visit'] = 1;
    
    if($_SESSION['visit'] < 5) $_SESSION['visit']++;
    

答案 1 :(得分:1)

如果我理解正确你需要使用一个会话变量 - 我有可能误解了。

session_start();

$name='counter';
$max=5;

if( !isset( $_SESSION[$name] ) ) $_SESSION[$name]=0;
if( $_SESSION[$name] <= $max ) $_SESSION[$name]++;

echo 'Page visits: '.$_SESSION[$name];

答案 2 :(得分:0)

问题是,在脚本的执行之间不保留变量的值。每次用户访问此页面时,$x将为1。

每次请求页面时,您的脚本将从头开始执行。它会将$x定义为1,显示其值(此时为1),递增它然后停止,因为您将break放在while的末尾1}}循环体。即使你删除了break所有你要完成的事情,这个计数器在同一页上显示5次,值为1到5。

如何“修复”这个问题太过广泛,无法详细解答。所以这里有几个模糊的选项供您考虑:

  • 将此值存储在服务器上的文件中。每次脚本执行时读取它,增加它,最后将它存储回来。
  • 将此值存储在数据库中。每次阅读......(同上)
  • 将此值存储在Cookie中或使其成为会话变量。这样,您就可以计算每位用户的访问次数