2013-05-26 2 views
0

Je tente de remplacer un écho récursif par une variable.php echo variable array

Bu le résultat que j'obtiendrai n'est pas le même

Voici le script de travail:

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>';   
} 

Et mon essai sans succès (pas d'erreur, mais pas les mêmes résultats):

$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;   
} 

Répondre

3

PHP n'a pas d'évaluation paresseuse en soi (sauf eval() 'ing seulement alors ...)

Mais vous pouvez l'écrire dans une fonction que vous appelez avec $a comme paramètre de fonction:

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

Cela fonctionne très bien! Merci! – freaky

+0

Pensez-vous que s'il est possible d'ajouter une condition if comme ceci: si $ currentpage = ($ a-2) ou ($ a-1) ou $ a ... alors changez bgcolors2 dans la classe par bgcolor1. – freaky

+0

C'est, ajouter un deuxième paramètre pour la couleur? – bwoebi

3

Essayez de déplacer un peu le code:

 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

Cela fonctionne très bien! Merci! – freaky

1

Voici une solution utilisant une fonction anonyme affectée à une variable:

<?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); 
    } 
}