8791 sujets

Développement web côté serveur, CMS

bonjour à tous,

dans une page php, j'ai codé une structure comme suit qui en fonction d'une variable $lang (fr, uk, de .. etc) affiche un tableau ou un autre


        <?php switch ($lang) {
	    case "fr":  
            echo '<p>'.$date->months_names_fr[$m-1].'</p>'; 
            break;  
	    case "uk":  
            echo '<p>'.$date->months_names_uk[$m-1].'</p>'; 
            break;
	    default:
	    break;
			}  ?>  


j'aurais voulu carrément fabriquer le nom du tableau à partir de la variable, du style
"months_names_" . $lang . "[$m-1]
pour éviter le switch et n'avoir qu'une seule ligne echo.

c'est possible?

merci
Modifié par lionel_css3 (30 Aug 2012 - 15:38)
Bonjour,
Tu pourrais le tout dans un tableau:

months_names[$lang][$m-1]

Modifié par loicbcn (30 Aug 2012 - 16:07)
loicbcn a écrit :
Bonjour,
Tu pourrais le tout dans un tableau:

months_names[$lang][$m-1]


effectivement j'avais pas pensé à ça......je vais essayer, merci à toi

sinon, d'une manière générale, pour composer le nom d'une variable à partir d'une autre variable, c'est toujours compliqué....
salut...

euh non c pas compliqué Smiley decu

admettons un résultat souhaité $bonjour10

$id=10;
tu écris ainsi ${"bonjour".$id};
je savais que c'était pas compliqué et qu'il y avait une histoire de { } mais je me rappelle jamais de cette syntaxe...
en fait, quel est le nom de cette méthode? la prochaine fois ça m'aidera à chercher dans la doc php, c'est le passage en référence??

en attendant, la méthode de loic marche bien, j'ai déclaré mon tableau comme ceci:

var $months_names = array(
"fr" => array('Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'Août', 'Septembre', 'Octobre', 'Novembre', 'Décembre'),
"uk" => array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'),
"de" => array('Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember')
);
pchlj a écrit :
salut...

euh non c pas compliqué Smiley decu

admettons un résultat souhaité $bonjour10

$id=10;
tu écris ainsi ${&quot;bonjour&quot;.$id};


et alors au fait tu aurais fait comment avec

 echo '<p>'.$date->months_names_uk[$m-1].'</p>';


en sachant qu'il faut remplacer le uk par $ lang ?
je savais que cette question viendrai...

je ne sais pas si ça fonctionne mais un truc de ce genre


echo '<p>'.${"date->months_names_".$lang."[".$m-1."]"}.'</p>';


le truc c'est que ce n'est pas très utilisé en POO

et j'ai un gros gros doute sur le résultat...

à me dire si ça ça fonctionne ... Smiley cligne

sinon aussi cette méthode


echo '<p>'.$date->months_names_$lang[$m-1].'</p>';


pareil sans garantie

et enfin une autre piste


$toobject= "months_names_".$lang;
echo '<p>'.$date->(string)$toobject[$m-1].'</p>';



à voir Smiley smile

en fait je sais pas comment je le ferai car je fais pas Smiley lol mais voilà des pistes

Si une fonctionne hésite as à le dire Smiley cligne
j'essayerai ta 1ere solution, pour voir..

la 2eme, ça marche pas,

la troisième ça rajoute une variable, ce que je voulais éviter Smiley smile

en tout cas le tableau à 2 dimension est une solution élégante...
Pour les langues, perso c'est plutôt un répertoire langue, un sous-répertoire par langue et un fichier par type de données... Avec moins de données, ce que je ferais c'est une architecture simple :

include_once ('langue/'.$lang.'.php');

Et dans langue .php, un tableau, identique pour les keys et différent pour les valeurs en gros un truc dans le genre :

$mois=array("Janvier", "Février",...); dans FR.php
$mois=array("January", "February",...); dans EN.php

Bon après, je travaille avec des tableaux nettement plus gros, d'où la séparation ^^


Genre ceux de ce matin (qui doivent être complété et testé) :

include_once ('langue/'.$langue.'/PJ.php) (fichier appelé dans la classe "pj" ^^)

répertoire fr
<?php
$languePj=array(
	'classe' => array (
		1 =>'Voleur',
		2 =>'Guerrier',
		3 =>'Templier',
		4 =>'Archer'
	),
	'sexe' => array (
		1 => 'Homme',
		2 => 'Femme'
	)
)

?>


Répertoire "en"

<?php
$languePj=array(
	'classe' => array (
		1 =>'Thief',
		2 =>'Warrior',
		3 =>'Templar',
		4 =>'Scout'
	),
	'sexe' => array (
		1 => 'Male',
		2 => 'Female'
	)
)

?>



Bon, après suis une folle du découpage Smiley langue
lionel_css3 a écrit :


et alors au fait tu aurais fait comment avec

 echo '<p>'.$date->months_names_uk[$m-1].'</p>;


en sachant qu'il faut remplacer le uk par $ lang ?



 echo '<p>'.$date->${'months_names_'.$lank}[$m-1].'</p>;
Trop facile Smiley biggol

Cela s’appelle variable variables