Lister un tableau

Mammouth du PHP | 531 Messages

26 nov. 2007, 21:50

Bonsoir

Je viens de faire une fonction pour créer un tableau. Elle contient dailleur une petite erreur mais c'ets pas le plsu important :wink:

Maintenant je voudrais lister son contenu dans une liste à puce. Mais je suis perdu dans toutes les fonctions en rapport avec les tableaux et je trouve pas avec quoi démarrer... de plus il faut que j'aille chercher les données à l'intérieur même de la fonction :?

function liste_annees() {
	$tableau= array();
	for($i=1900; $i<2010; $i++) {
		$tableau[$i] = $tab[$i];
	}
}

liste_annees();

echo '<ul>';
// boucle données du tableau
echo '</ul>';

Quelq'un peut l'éclairer ma lanterne ? :cry:

Merci d'avance

Mammouth du PHP | 2937 Messages

26 nov. 2007, 22:00

À la rigueur, pas besoin de créer une fonction.
$tableau = array ();
for ($i = 1900; $i < 2010; $i ++)
{
  $tableau[] = $i;
}
echo '<ul>'."\n";
foreach ($tableau as $valeur)
{
  echo '  <li>'.$valeur.'</li>'."\n";
}
echo '</ul>';

Mammouth du PHP | 531 Messages

26 nov. 2007, 23:11

Si en fait j'ai besoin de faire une fonction puisque je rappelle régulièrement l'opération...

Eléphanteau du PHP | 32 Messages

26 nov. 2007, 23:18

Tu as juste à adapter le code précédent :

function liste_annees() {
    $tableau= array();
    for($i=1900; $i<2010; $i++) {
        $tableau[$i] = $tab[$i];
    }
    return $tableau;
}
function affiche_tableau($tableau)
{
   echo '<ul>'."\n"; 

   foreach($tableau as $valeur)
   {
       echo '<li>'.$valeur.'</li>'."\n"; 
   }

   echo '</ul>'."\n"; 
}
Et tu t'en sert comme ceci :
$tab = liste_annees;
affiche_tableau($tab);
Voilou ;)

Mammouth du PHP | 531 Messages

27 nov. 2007, 00:08

Merci pour la piste :)

Pour la deuxième partie j'ai en fait pas besoin de fonctions
J'ai modifié aussi la fonction de base pour qu'elle puisse servir avec d'autres nombres
function liste_annees($debut,$fin) {
	$tableau= array();
	for($i=$debut; $i<$fin; $i++) {
		$tableau[$i] = $tab[$i];
	}
	return $tableau;
}

$tableau= liste_annees(1900,2010);

echo '<ul>';
foreach($tableau as $annee) {
	echo '<li>'.$annee.'</li>'."\n"; 
}
echo '</ul>';
Je sais pas ou est le soucis mais je me retrouve avec des résultats vides :(

ViPHP
AB
ViPHP | 5818 Messages

27 nov. 2007, 02:35

Oui mais Victor t'avais corrigé un bug que tu a réintroduis dans ton code : $tab[$i] n'existe pas, d'ailleurs le serveur php a du te l'indiquer quand tu as testé ton code. Pour lister les années de 1900 à 2010 inclus il te suffit donc de deux petites corrections
function liste_annees($debut,$fin) {
    $tableau= array();
    for($i=$debut; $i<$fin + 1; $i++) {
        $tableau[$i] = $i;
    }
    return $tableau;
}

$tableau= liste_annees(1900,2010);

echo '<ul>';
foreach($tableau as $annee) {
    echo '<li>'.$annee.'</li>'."\n"; 
}
echo '</ul>';

Mammouth du PHP | 531 Messages

27 nov. 2007, 16:29

Ah wi autant pour moi :wink:
Ca marche beaucoup mieux comme ça.
J'ai pas trop compris pour la boucle foreach mais je vais regarder la doc

Merci :)

Mammouth du PHP | 2937 Messages

27 nov. 2007, 17:53

Si tu tiens à $tab[$i], il te faudra boucler comme suit :
foreach ($tab as $cle => $valeur)
{
  echo $cle; // Tu récupères la clé, et non la valeur
}
Mais, dans ton cas, il vaut mieux remplir un tableau de la manière dont je t'ai précédemment indiquée.