链接页面的数学方程式

时间:2011-03-18 17:06:09

标签: php algorithm math graph-theory

这是一种善良的数学查询..我想在php中执行以下的脚本

假设我有100页page1.php,page2.php,page3.php,page4.php ....转到page100.php

我想创建一个php算法来将每个页面相互链接。每个页面都有10个页面链接到其他页面,但我想要一个链接每个页面的数学方程式。

第1页将有10个指向其他页面的链接,第2页将有10个指向其他页面的链接,这将继续执行,直到每个页面相互链接为100页。

3 个答案:

答案 0 :(得分:3)

一种简单的方法是链接到前一页和后五页,从100开始:

  • 1链接到96,97,98,99,100,2,3,4,5,6
  • 2个链接到97,98,99,100,1,3,4,5,6,7
  • ...
  • 100个链接到95,96,97,98,99,1,2,3,4,5

每个页面都会链接到10次(从它链接到自身的确切页面)


当然,也许你应该考虑简单地改进你的UI,而不是做这样的奇怪事情?例如,有一个下拉菜单,甚至更好的搜索框,用户可以找到他们想要的内容?

答案 1 :(得分:1)

为什么你有这么多的PHP页面。为什么不使用php的$ _GET方法。

而不是:page1.php,page2.php,page3.php,page4.php ....转到page100.php

你的用户会转到:content.php?page = 1,content.php?page = 2,content.php?page = 3 ...

并且在content.php页面中,您可以拥有一系列页面:

$pages = array (1,2,3,4,...)

然后:

if(in_array($_GET['page'], $pages){
    //do stuff for whatever page is set
}

然后在每个页面的底部,您可以输出您拥有的所有页面:

shuffle($pages); //put pages in a random order
$count = 0;
foreach($pages as $page){
    echo "<a href='content.php?page=$page'>Page $page</a>";
    if($count < 10){
        $count++;
    }
    else break;
}

答案 2 :(得分:0)

与manitor的答案类似,但只在当前页面附近显示10页。

define("TOTAL_PAGES", 100);
define("FOOTER_LINK_COUNT", 10);
$page = isset($_GET['page']) ? (int)$_GET['page'] : 1;

// Range check
if ( $page < 1 || $page > TOTAL_PAGES ) {
  $page = 1;
}

// You can display a header here if you'd like

// Include actual content page
include("page{$page}.php");

// Generate the footer    
echo "<ul>\n";
for (
  // Maths! Start at the current page, minus half of the total number of links to display
  // but don't go below 0 (negative pages) and don't go over the total number of pages
  $i = min(
    max(0, $page - ceil(FOOTER_LINK_COUNT / 2)),
    TOTAL_PAGES - FOOTER_LINK_COUNT
  ), 
  $c = 1; 
  $c <= FOOTER_LINK_COUNT;
  ++$c ) {
  printf("\t<li><a href='?page=%1\$d'>%1\$d</a></li>\n", $i + $c);
}

echo "</ul>";

因此,对于第1页,您会看到1,2,3,4,5,6,7,8,9,10

第10页:6,7,8,9,10,11,12,13,14,15

第95页:91,92,93,94,95,96,97,98,99,100