Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

creer une variable a partir de pl usieurs

6 réponses
Avatar
Rom1
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

6 réponses

Avatar
Olivier Miakinen

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

[ 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

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

[ 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


Avatar
Olivier Miakinen

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]));


<?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);
?>

Avatar
Rom1
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]));


<?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.


Avatar
Olivier Miakinen

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.

Avatar
Bruno Desthuilliers
(snip)
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 ?


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;
}