Discussion:
creer une variable a partir de pl usieurs
(trop ancien pour répondre)
Rom1
2007-11-29 19:00:38 UTC
Permalink
Bonjour,

Je souhaiterais créer une variable à partir de plusieurs... Je m'explique :

J'ai des variables créées à la volée :
$tab1[1]
$tab2[1]
$tab2[1]
$tab4[1]
...

je souhaiterais que ces variables deviennent une seule formatée comme ceci :

$supervariable = "$tab1[1],$tab2[1],$tab3[1],$tab4[1]"

pour qu'en suite je puisse écrire un code comme celui-ci :

array ("1",$supervariable)


qui serait la même chose que si j'écrivais :

array ("1",$tab1[1],$tab2[1],$tab3[1],$tab4[1]),

est-ce possible... Ai-je au moins été clair... Ca ce n'est pas sur,
auquel cas je m'en excuse.

Romain
Olivier Miakinen
2007-11-29 19:15:30 UTC
Permalink
[ des choses pas très claires ]
est-ce possible... Ai-je au moins été clair... Ca ce n'est pas sur,
auquel cas je m'en excuse.
Comme je ne suis pas sûr d'avoir compris ce que tu souhaites faire,
regarde déjà ces trois pages de la doc qui ont des chances de répondre
à ton besoin. Si ce n'était pas le cas, reviens donner des précisions.

http://fr3.php.net/manual/fr/function.implode.php
http://fr3.php.net/manual/fr/function.explode.php
http://fr3.php.net/manual/fr/language.variables.variable.php
Rom1
2007-11-30 11:25:00 UTC
Permalink
Post by Olivier Miakinen
[ des choses pas très claires ]
est-ce possible... Ai-je au moins été clair... Ca ce n'est pas sur,
auquel cas je m'en excuse.
Comme je ne suis pas sûr d'avoir compris ce que tu souhaites faire,
regarde déjà ces trois pages de la doc qui ont des chances de répondre
à ton besoin. Si ce n'était pas le cas, reviens donner des précisions.
http://fr3.php.net/manual/fr/function.implode.php
http://fr3.php.net/manual/fr/function.explode.php
http://fr3.php.net/manual/fr/language.variables.variable.php
Merci beaucoup pour les liens que je suis allé consulté mais en fait je
m'embrouille dans ce que j'ai le droit de faire et de ne pas faire en PHP.

Je dois obtenir ceci :

$donnees = array(
array("1",$tab1[1],$tab2[1],$tab3[1]),
array("2",$tab1[2],$tab2[2],$tab3[2]),
array("3",$tab1[3],$tab2[3],$tab3[3]),
array("4",$tab1[4],$tab2[4],$tab3[4]),
array("5",$tab1[5],$tab2[5],$tab3[5]));

Chaque variable $tabx[y] doit être crée à la volée. Au final je voudrais
optimiser le code un peu comme ceci (je sais que ce que j'écris là est
aberrant, c'est juste pour illustrer) :

$donnees = array(

$i = 0;
While ($y < 5)
{
$y = $y + 1;
array ("$y"
$x = 0;
While ($x < 3)
{
$x = $x + 1;
,${'tab'.$x}[$y]
}
}
);

Mais forcément ça ne peut pas fonctionner… Y a t-il une méthode pour
cela… Je fais du PHP depuis peu de temps et là je suis dans une impasse.
Je ne sais pas comment je dois m’y prendre. Est-ce qu’au moins c’est
possible ?

Merci pour votre aide
Olivier Miakinen
2007-12-03 21:17:26 UTC
Permalink
Post by Rom1
$donnees = array(
array("1",$tab1[1],$tab2[1],$tab3[1]),
array("2",$tab1[2],$tab2[2],$tab3[2]),
array("3",$tab1[3],$tab2[3],$tab3[3]),
array("4",$tab1[4],$tab2[4],$tab3[4]),
array("5",$tab1[5],$tab2[5],$tab3[5]));
<?php
function subarray($n) {
global $tab1, $tab2, $tab3;
return array("$n", $tab1[$n], $tab2[$n], $tab3[$n]);
}
$a = array(1, 2, 3, 4, 5);
$donnees = array_map("subarray", $a);
?>
Rom1
2007-12-05 09:36:51 UTC
Permalink
Post by Olivier Miakinen
Post by Rom1
$donnees = array(
array("1",$tab1[1],$tab2[1],$tab3[1]),
array("2",$tab1[2],$tab2[2],$tab3[2]),
array("3",$tab1[3],$tab2[3],$tab3[3]),
array("4",$tab1[4],$tab2[4],$tab3[4]),
array("5",$tab1[5],$tab2[5],$tab3[5]));
<?php
function subarray($n) {
global $tab1, $tab2, $tab3;
return array("$n", $tab1[$n], $tab2[$n], $tab3[$n]);
}
$a = array(1, 2, 3, 4, 5);
$donnees = array_map("subarray", $a);
?>
Oui ! Merci pour tout j'approche du but. Je reste toujours coincé sur un
point. C'est qu'ici l'exemple se faisait avec $tab1, $tab2 et $tab3 mais
je dois les crééer à la volé. ils dépendent d'un nombre de rubrique
que je récupère dans une table.

Par exemple si ce nombre de rubrique est égal à 3 alors je dois obtenir

$donnees = array(
array("1",$tab1[1],$tab2[1],$tab3[1]),
array("2",$tab1[2],$tab2[2],$tab3[2]),
array("3",$tab1[3],$tab2[3],$tab3[3]),
array("4",$tab1[4],$tab2[4],$tab3[4]),
array("5",$tab1[5],$tab2[5],$tab3[5]));

mais s'il est égal à 5 alors il faudra que j'obtienne :

$donnees = array(
array("1",$tab1[1],$tab2[1],$tab3[1],$tab4[1],$tab5[1]),
array("2",$tab1[2],$tab2[2],$tab3[2],$tab4[1],$tab5[1]),
array("3",$tab1[3],$tab2[3],$tab3[3],$tab4[1],$tab5[1]),
array("4",$tab1[4],$tab2[4],$tab3[4],$tab4[1],$tab5[1]),
array("5",$tab1[5],$tab2[5],$tab3[5],$tab4[1],$tab5[1]));

Est il possible d'adapter cela en fonction du nombre de rubriques ?

Encore merci pour votre aide.
Olivier Miakinen
2007-12-05 16:23:52 UTC
Permalink
Post by Rom1
Oui ! Merci pour tout j'approche du but. Je reste toujours coincé sur un
point. C'est qu'ici l'exemple se faisait avec $tab1, $tab2 et $tab3 mais
je dois les crééer à la volé. ils dépendent d'un nombre de rubrique
que je récupère dans une table.
Un truc de ce genre a des chances de fonctionner :

<?php
$n1 = ...
$n2 = ...
$donnees = array();
for ($idx1 = 1; $idx1 <= $n1; $idx1++) {
$ligne = array("$idx1");
for ($idx2 = 1; $idx2 <= $n2; $idx2++) {
$ligne[] = ${tab$idx1}[$idx2];
}
$donnees[] = $ligne;
}
?>

Pour l'instruction à l'intérieur de la boucle la plus profonde,
j'utilise ce qui est expliqué ici :
http://www.php.net/manual/fr/language.variables.variable.php

Mais le plus souvent utiliser un tableau est quand même plus pratique
et plus lisible que les variables variables. D'ailleurs je ne suis
absolument pas certain de ma syntaxe.
Bruno Desthuilliers
2007-12-05 22:50:07 UTC
Permalink
Rom1 a écrit :
(snip)
Post by Rom1
Oui ! Merci pour tout j'approche du but. Je reste toujours coincé sur un
point. C'est qu'ici l'exemple se faisait avec $tab1, $tab2 et $tab3 mais
je dois les crééer à la volé. ils dépendent d'un nombre de rubrique
que je récupère dans une table.
Par exemple si ce nombre de rubrique est égal à 3 alors je dois obtenir
$donnees = array(
array("1",$tab1[1],$tab2[1],$tab3[1]),
array("2",$tab1[2],$tab2[2],$tab3[2]),
array("3",$tab1[3],$tab2[3],$tab3[3]),
array("4",$tab1[4],$tab2[4],$tab3[4]),
array("5",$tab1[5],$tab2[5],$tab3[5]));
$donnees = array(
array("1",$tab1[1],$tab2[1],$tab3[1],$tab4[1],$tab5[1]),
array("2",$tab1[2],$tab2[2],$tab3[2],$tab4[1],$tab5[1]),
array("3",$tab1[3],$tab2[3],$tab3[3],$tab4[1],$tab5[1]),
array("4",$tab1[4],$tab2[4],$tab3[4],$tab4[1],$tab5[1]),
array("5",$tab1[5],$tab2[5],$tab3[5],$tab4[1],$tab5[1]));
Est il possible d'adapter cela en fonction du nombre de rubriques ?
Au lieu d'utiliser $tab1, $tab2, ..., $tabN, utilise un tableau de N
tableaux - appelons le $tabs -, tel que $tabs[1] == $tab1, $tabs[2] ==
$tab2, etc. Ce n'est pas plus dur à générer...

Après quoi:

function dispatch($tabs) {
$n = count($tabs);
$donnees = array();
for($i = 1; $i <= 5; $i++) {
$tmp = array("$i");
for($j = 1; $j <= $n; $j++) {
$tmp[] = $tabs[$j][$i];
}
$donnees[] = $tmp;
}
return $donnees;
}

Continuer la lecture sur narkive:
Loading...