2 votes

Construire un tableau dynamiquement en php

J'ai besoin que ce tableau devienne dynamique : (sortie initiale)

$data[0] = array('var0');

J'ai un cycle for qui renvoie (après quelques conditions) quelque chose comme un VAR :

for($i = 0; $i < N; $i++) 
    {
    (...) END AS var1;
    (...) END AS var2;
    (...) END AS var3;
    (...) END AS varN;
    (...) END AS (...)
    }

Sortie attendue après le premier cycle :

 $data[0] = array('var0','var1');

Sortie attendue après le deuxième cycle :

 $data[0] = array('var0','var1','var2');

Et continuez (résultat final attendu) :

 $data[0] = array('var0','var1','var2','var3','varN');

Comment cela pourrait-il être fait ?

3voto

psynnott Points 2741

Pour "pousser" quelque chose à l'extrémité du tableau, utilisez la fonction [] la syntaxe :

$data[0][] = 'something to add to array';

Par exemple

$data[0] = array();
$data[0][] = 'first';
$data[0][] = 'second';

$data[0] contiendra :

array('first','second');

3voto

Shomz Points 13012
for($i = 0; $i < N; $i++) {
    $data[0][] = 'var' . $i;
}

1voto

hakre Points 102271

Pourquoi ne pas préfixer la tranche de numéros, par exemple via array_map :

$data[$i] = array_map(function($v) {return 'var' . $v;}, range(0, $i));

Et si vous avez une gamme à l'intérieur de la gamme, vous pouvez aussi le faire :

$prefix = function($prefix) {
    return function($v) use ($prefix) {
        return $prefix . $v;
    };
};

$map = function($v) use ($prefix) {
    return array_map($prefix('var'), range(0, $v));
}

$data = array_map($map, range(0, $n - 1));

Ou en une seule fois (compacté) :

$data = array_map(function($v) {
    return array_map(function($v) { return 'var' . $v;}, range(0, $v));       
}, range(0, $n - 1);

0voto

webnoob Points 4710

Peut-être que vous voulez : array_push() . Vous pouvez alors ajouter vos variables à votre tableau dans votre boucle.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X