Page 1 sur 1

problème lors de la création d'un Array()

Posté : 21 mai 2013, 18:51
par scapine
Bonjour,
Je recois un message d'erreur: Array to string conversion lors de la création de mon tableau.
Je récupère une chaine de caractères que je transforme ensuite en un tableau ($tab_php). Ensuite je dois créer avec ce tableau un Array du type:
$T=Array( array("x"=>valeur0, "y"=> valeur1), array("x"=>valeur2, "y"=> valeur3),...)
Je dois créer un tableau de cette forme pour ensuite utiliser une fonction qui crée un polygone à partir d'un tableau de ce type sous Imagick.

Voici comment je pensais faire, mais cela ne fonctionne pas. erci de votre aide.
	$tab_php = explode(",", $_POST["coordonnee"]);  //recuperation de la chaine et convertion en tableau
	//echo ($_POST["coordonnee"]);
	echo ($tab_php[2]);

$n=count($tab_php);
//echo ($n);

$tab=array();
for($i=0; $i<$n/2; $i++){
	for($j=0; $j<2; $j++){
		$tab=$tab.array("x"=> $tab_php[2*$i],"y"=>$tab_php[2*$i+$j]).",";
	}
}

$tab_final=Array($tab);

Re: problème lors de la création d'un Array()

Posté : 21 mai 2013, 19:31
par xTG
Le souci vient du fait que tu tentes de concaténer une chaîne de caractères avec un array.
C'est comme vouloir mettre un bateau dans l'espace...

Pour rajouter une nouvelle dimension à ton array tu peux faire ainsi :
$tab[] = array(......);
Ou bien utiliser une variable d'index et l'incrémenter :
$tab[$index++] = array(....);

Re: problème lors de la création d'un Array()

Posté : 21 mai 2013, 20:15
par scapine
Ok, merci. Mais du coup quand j'ajoute un élément avec tab[], j'obtiens bien au final cette structure: tab= array(...), array(....),array(...)? Ou bien il faut que j'utilise une fonction comme join() pour l'obtenir?
Car en supposant que j'ai la bonne structure lors que je fais ceci:
$tab=array();
for($i=0; $i<$n/2; $i++){
	for($j=0; $j<2; $j++){
		$tab[]=array('x'=> $tab_php[2*$i],'y'=>$tab_php[2*$i+$j]);
	}
}


$tab_final=array($tab);


	//$tab_final=Array(array('x'=>  ,'y'=>  ),array('x'=>  ,'y'=> )...);    forme que doit prendre $tab_final
	
	//image_fond
    $masq = new Imagick();
	$masq->newImage(500,500, new ImagickPixel('Black'));  //$largeur,$hauteur
	$masq->setImageFormat('tif');
	//polygone
	$draw = new ImagickDraw();               
	$draw->polygon($tab_final);
	$draw->setFillColor( 'White' );
	//incorporation du polygone dans la masque
	$masq->drawImage( $draw );
 
	echo $masq->getImageBlob( );
mais fonction polygon ne marche pas. On m'affiche ce message d'erreur: Fatal error: Uncaught exception 'ImagickDrawException' with message 'Unable to read coordinate array' in /home/marie/www/site_projet/masque_manuel.php:35 Stack trace: #0 /home/marie/www/site_projet/masque_manuel.php(35): ImagickDraw->polygon(Array) #1 {main} thrown in /home/marie/www/site_projet/masque_manuel.php on line 35

Cela veut dire que $tab_final n'est pas de la bonne forme si je me trompe pas.

Re: problème lors de la création d'un Array()

Posté : 21 mai 2013, 20:19
par moogli
salut,

Tu passe un tableau de tableau de tableau ce n'est pas ce qu'il faut ?

utilise un bloc try / catch pour récupérer et gérer correctement les erreurs de la classe http://www.php.net/manual/fr/language.exceptions.php



@+

Re: problème lors de la création d'un Array()

Posté : 21 mai 2013, 20:28
par scapine
Oui il me faut un tableau de tableau, mais il y a qqch dans mon tableau de tableau qui plait pas à la fonction polygone() d'Imagick.

Merci

Re: problème lors de la création d'un Array()

Posté : 21 mai 2013, 20:30
par moogli
utilise var_dump pour l'afficher tu verra déjà s'il est conforme a ce que tu attend, par ce qula c'est un tableau qui contient un tableau qui contient DES tableaux :)


@+

Re: problème lors de la création d'un Array()

Posté : 21 mai 2013, 20:39
par scapine
D'accord. En fait il ne fallait pas que je remette $tab dans un tableau. Merci pour la fonction var_dump, je ne la connaissait pas, mais elle est bien utile :D

Re: [RESOLU] problème lors de la création d'un Array()

Posté : 21 mai 2013, 20:45
par moogli
:mrgreen:

de rien