【问题标题】:PHP explode and changing variablesPHP 爆炸和改变变量
【发布时间】:2011-04-16 09:37:51
【问题描述】:

所以我试图在我的网站上创建下一个和上一个按钮,我认为我以一种相当通用的方式来处理它。我这样命名我的每个页面:

1.php 2.php 3.php

等等

所以形象地说,在 2.php 上,前一个链接指向 1.php,下一个链接指向 3.php。

为了在所有页面上自动执行此过程,我正在尝试编写一个简单的代码来从当前文件名中加 1 和减 1。

所以在 PHP 中,我这样做了:

<?php
$dir = $_SERVER['PHP_SELF'];
$dirchunks = explode("/", $dir);
$current = $dirchunks[3];
?>

$current 回显 2.php,即我所在的页面,是否有加 1 或减 1,同时保持 .php 与变量 $current 保持不变?所以 $current 2.php 会变成 3.php 和 1.php?

我希望我的问题没有令人困惑,并且有人可以阐明我的情况。感谢您的帮助!

【问题讨论】:

  • 嗯,$current - 1$current + 1?还是我误解了这个问题?
  • $current="1.php";$current=$current+1; $current=$current.'php';
  • 沙克蒂·辛格:"1.php" + 1 == 0
  • 这很简单,因为 $current + 1 产生 2 然后我只需要在其末尾添加 '.php'。

标签: php string variables numbers explode


【解决方案1】:

你不应该被/炸开。如果将脚本移动到另一个目录会发生什么?文件名不会在同一个块中。使用basename 从路径中获取文件名。

【讨论】:

    【解决方案2】:

    请记住,第一页和最后一页会有一个环绕,你应该使用basename 来获取文件名,将扩展名作为可选参数传递也会去掉它,只留下文件的编号页面:

    $totalNumberOfPages = 3;
    $pageNumber = basename($_SERVER['PHP_SELF'], "php");
    $nextPageNumber = (($pageNumber + 1) % $totalNumberOfPages) + 1;
    $previousPageNumber = (($pageNumber - 1) % $totalNumberOfPages) + 1;
    
    $dir = dirname($_SERVER['PHP_SELF']);
    $nextPage = $dir . "/" . $nextPageNumber . ".php";
    $previousPage = $dir . "/" . $previousPageNumber . ".php";
    

    【讨论】:

    • 感谢您的详细记录,使用 basename 后,有些明显。 :D
    【解决方案3】:
    <?php
    $YOUR_MAX_COUNT = 10;
    $cur = basename($_SERVER['PHP_SELF'],".php");
    $cur = (int)$cur;
    $i=1;
    for (; $i<$cur; $i++)
        echo "<a href='$i.php'>$i</a>\n";
    echo $i . " ";
    $i++;
    for (; $i<$YOUR_MAX_COUNT; $i++)
        echo "<a href='$i.php'>$i</a>\n";
    ?>
    

    【讨论】:

      猜你喜欢
      • 2011-04-02
      • 2014-11-21
      • 1970-01-01
      • 2011-03-04
      • 1970-01-01
      • 2015-12-03
      • 1970-01-01
      • 1970-01-01
      • 2013-09-16
      相关资源
      最近更新 更多