2013-05-26 128 views
0

我尝试用变量替换递归回声。php回声变量数组

卜的结果,我获得是不一样的

这里工作的脚本:

if ($currentpage <= 3 && $currentpage != "all") { 
    $a = 3; 
    echo '<a class="page bgcolor2" href="?pagenb=' . ($a-2) . '">' . ($a-2) . '</a>'; 
    echo '<a class="page bgcolor2" href="?pagenb=' . ($a-1) . '">' . ($a-1) . '</a>'; 
    echo '<a class="page bgcolor2" href="?pagenb=' . ($a) . '">' . ($a) . '</a>'; 
    echo '<a class="page bgcolor2" href="?pagenb=' . ($a+1) . '">' . ($a+1) . '</a>'; 
    echo '<a class="page bgcolor2" href="?pagenb=' . ($a+2) . '">' . ($a+2) . '</a>';   
} 
if ($currentpage > 3 && $currentpage != "all" && $currentpage < $pages-2) { 
    $a = $currentpage; 
    echo '<a class="page bgcolor2" href="?pagenb=' . ($a-2) . '">' . ($a-2) . '</a>'; 
    echo '<a class="page bgcolor2" href="?pagenb=' . ($a-1) . '">' . ($a-1) . '</a>'; 
    echo '<a class="page bgcolor2" href="?pagenb=' . ($a) . '">' . ($a) . '</a>'; 
    echo '<a class="page bgcolor2" href="?pagenb=' . ($a+1) . '">' . ($a+1) . '</a>'; 
    echo '<a class="page bgcolor2" href="?pagenb=' . ($a+2) . '">' . ($a+2) . '</a>'; 
} 
if ($currentpage >= $pages-2 && $currentpage != "all") { 
    $a = $pages-2; 
    echo '<a class="page bgcolor2" href="?pagenb=' . ($a-2) . '">' . ($a-2) . '</a>'; 
    echo '<a class="page bgcolor2" href="?pagenb=' . ($a-1) . '">' . ($a-1) . '</a>'; 
    echo '<a class="page bgcolor2" href="?pagenb=' . ($a) . '">' . ($a) . '</a>'; 
    echo '<a class="page bgcolor2" href="?pagenb=' . ($a+1) . '">' . ($a+1) . '</a>'; 
    echo '<a class="page bgcolor2" href="?pagenb=' . ($a+2) . '">' . ($a+2) . '</a>';   
} 

我的尝试没有成功(没有错误,但不相同的结果):

$pagenb = '<a class="page bgcolor2" href="?pagenb=' . ($a-2) . '">' . ($a-2) . '</a> 
      <a class="page bgcolor2" href="?pagenb=' . ($a-1) . '">' . ($a-1) . '</a> 
      <a class="page bgcolor2" href="?pagenb=' . ($a) . '">' . ($a) . '</a> 
      <a class="page bgcolor2" href="?pagenb=' . ($a+1) . '">' . ($a+1) . '</a> 
      <a class="page bgcolor2" href="?pagenb=' . ($a+2) . '">' . ($a+2) . '</a>'; 

if ($currentpage <= 3 && $currentpage != "all") { 
    $a = 3; 
    echo $pagenb;   
} 
if ($currentpage > 3 && $currentpage != "all" && $currentpage < $pages-2) { 
    $a = $currentpage; 
    echo $pagenb; 
} 
if ($currentpage >= $pages-2 && $currentpage != "all") { 
    $a = $pages-2; 
    echo $pagenb;   
} 

回答

3

PHP有没有偷懒的评估本身(除的eval()'荷兰国际集团它才...)

但是你可以把它写到你$a调用作为函数参数的函数:

function pagenb ($a) { 
    return '<a class="page bgcolor2" href="?pagenb=' . ($a-2) . '">' . ($a-2) . '</a> 
      <a class="page bgcolor2" href="?pagenb=' . ($a-1) . '">' . ($a-1) . '</a> 
      <a class="page bgcolor2" href="?pagenb=' . ($a) . '">' . ($a) . '</a> 
      <a class="page bgcolor2" href="?pagenb=' . ($a+1) . '">' . ($a+1) . '</a> 
      <a class="page bgcolor2" href="?pagenb=' . ($a+2) . '">' . ($a+2) . '</a>'; 
} 

if ($currentpage <= 3 && $currentpage != "all") { 
     echo pagenb(3);   
    } 
    if ($currentpage > 3 && $currentpage != "all" && $currentpage < $pages-2) { 
     echo pagenb($currentpage); 
    } 
    if ($currentpage >= $pages-2 && $currentpage != "all") { 
     echo pagenb($pages-2);   
    } 
+0

它工作的很棒!谢谢! – freaky

+0

你认为是否可以添加如下条件:if $ currentpage =($ a-2)或($ a-1)或$ a ...然后通过bgcolor1改变类中的bgcolors2。 – freaky

+0

这是,为颜色添加第二个参数? – bwoebi

3

尝试并将代码左右移动一下:

 if ($currentpage <= 3 && $currentpage != "all") { 
      $a = 3; 
     } 
     if ($currentpage > 3 && $currentpage != "all" && $currentpage < $pages-2) { 
      $a = $currentpage; 
     } 
     if ($currentpage >= $pages-2 && $currentpage != "all") { 
      $a = $pages-2; 
     } 

$pagenb = '<a class="page bgcolor2" href="?pagenb=' . ($a-2) . '">' . ($a-2) . '</a> 
        <a class="page bgcolor2" href="?pagenb=' . ($a-1) . '">' . ($a-1) . '</a> 
        <a class="page bgcolor2" href="?pagenb=' . ($a) . '">' . ($a) . '</a> 
        <a class="page bgcolor2" href="?pagenb=' . ($a+1) . '">' . ($a+1) . '</a> 
        <a class="page bgcolor2" href="?pagenb=' . ($a+2) . '">' . ($a+2) . '</a>'; 

      echo $pagenb;   
?> 
+0

它很棒!谢谢! – freaky

1

这是一个使用匿名函数分配给变量的解决方案:

<?php 

$pages = 10; 
$currentpage = 8; 
$pagination = function($value) { 
    for ($a = $value, $p = -2; $p <= 2; $p++) { 
     echo '<a class="page bgcolor2" href="?pagenb=' . ($a+$p) . '">' . ($a+$p) . '</a>'; 
    } 
}; 

if ($currentpage != 'all') { 
    if ($currentpage <= 3) { 
     $pagination(3); 
    } elseif ($currentpage > 3 && $currentpage < $pages-2) { 
     $pagination($currentpage); 
    } elseif ($currentpage >= $pages-2) { 
     $pagination($pages-2); 
    } 
}