Foreach/ librairie gd

Résolu/Fermé
Signaler
-
Messages postés
150
Date d'inscription
vendredi 10 août 2007
Statut
Membre
Dernière intervention
23 avril 2010
-
Bonjour,

je fais des schéma avec la librairie gd.
Mon problème est que ma boucle ne me génère pas ma deuxième clé (içi B); j'obtiens bien la première clé A écrit en gris mais impossible d'avoir B écris en dessous et en gris aussi. (Alors que si je fais
print("enzyme: <b>". $key ."</b><br>"); j'obtiens bien mes clés l'une en dessous de l'autre!!!!)
La valeur de $key ne change pas, elle reste toujours égale à la première clé, mais je ne comprend pas pourquoi
Peut-on m'aider


<?php
header("Content-type: image/png");
$x = 940;
$y = 120;

$im = imagecreatetruecolor ($x,$y) or die ("Impossible de crée un flux d'image GD");

$gris = imagecolorallocate ($im, 91, 91, 91 );

imagecolortransparent($im,$noir);

$titre_police = 3;

function endonucleases()
{
$enzymes = Array(
"A" => array(75,50,10,100),
"B" => array(75,100,10,100),
);
return $enzymes;
}

$o=endonucleases($enz);

$h=0;

foreach($o as $key => $value)
{
$h=$h+2;
imagestring ($im, $titre_police, $x-930, $y-102+$h, $key, $gris);
//le problème est que $key ne change pas de valeur
imagepng ($im);
imagedestroy($im); //détruit l'image, libérant ainsi de la mémoire

}

?>

1 réponse

Bonjour

Tu appelles la fonction endonucleases avec un parametre, alors qu'elle est définie sans paramètre. Pas beau, mais ça n'est pas le problème

Beaucoup plus grave, tu fais ton imagepng et ton imagedestroy à l'intérieur de ta boucle. Donc quand tu viens traiter la clé "B" c'est déjà trop tard.

Il faudrait que tu fermes le foreach avant le imagepng, et que tu prennes l'habitude de tester les valeurs renvoyées par les fonctions, tu aurais vu toi-même l'erreur.
un grand merci à toi.
J'ai fait la correction suivante-> $o=endonucleases();
Messages postés
150
Date d'inscription
vendredi 10 août 2007
Statut
Membre
Dernière intervention
23 avril 2010
2
Un grand merci.
J'ai fait les modifications suivantes:
* fermer le foreach avant le imagepng
* $o=endonucleases();