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

Fusionner de 1 a [n] tableaux, comment faire ?

8 réponses
Avatar
Alextophi
bonjour

je souhaite merger ou combiner les valeurs de 1 à [n] tableaux. Les
fonctions proposées en standard sont calibrées pour accepter un
nombre déja connu de tableau (enfin, de ce que je comprends):

exemple :
array_combine -- Crée un tableau à partir de deux autres tableaux
$c = array_combine($a, $b);

array_merge_recursive -- Combine plusieurs tableaux ensemble,
récursivement
$result = array_merge_recursive($ar1, $ar2);

array_merge -- Fusionne un ou plusieurs tableaux
$result = array_merge ($array1, $array2);


Bref, mon problème est que je ne connais pas le nombre de tableau à
fusionner !! sans doute faut-il faire une fonction ?

d'avance merci.

christophe

-- Je suis débutant, mais je m'accroche :) --

8 réponses

Avatar
Alextophi
j'avance mais j'un un petit pb :)

j'ai un tableau : $t[0], $t[1], $t[2], $t[3] etc ...

// On compte le nombre de reference [0],[1] ...
$nbtab = count($t);
// Construction de la liste sous forme de chaine de caratères de type
$t[1],$t[2],$t[3],...
$tabmerge = ""; // init
For ($idx=1; $idx <= $nbtab; $idx++) {
$tabmerge = $tabmerge.", "."$t[".$idx."]";
$tabmerge = substr($tabmerge,1,strlen ($tabmerge)); //
enleve la 1ere virgule
}

Print("<br>n chaine :".$tabmerge."<br>n");
$tabcombine = (array_merge($tabmerge)); // Merge plusieurs
tablo $t[1],$t[2],$t[3]

le Pb c'est que $tabmerge est bien construit($t[1],$t[2],$t[3]), mais
la fonction 'array_merge' le traite comme un tableau !?! .. je
comprends plus rien !?!

d'avance merci.

christophe
Avatar
Cedric Olmanst

je souhaite merger ou combiner les valeurs de 1 à [n] tableaux. Les

fonctions proposées en standard sont calibrées pour accepter un

nombre déja connu de tableau (enfin, de ce que je comprends):




exemple :

<SNIP>




Bref, mon problème est que je ne connais pas le nombre de tableau à

fusionner !! sans doute faut-il faire une fonction ?




Je ne comprends pas où tu récupères ces tableaux. Ils sont tous stockés

dans un autre tableau plus "général" ?

Avatar
Decryptus
Comment ca tu connais pas le nombre de tableaux ?
Ils arrivent comment ? ils viennent d'où ?

A mon avis ca manque d'informations ;)
Avatar
Olivier Miakinen

je souhaite merger ou combiner les valeurs de 1 à [n] tableaux. Les
fonctions proposées en standard sont calibrées pour accepter un
nombre déja connu de tableau (enfin, de ce que je comprends):

[..]

array_merge -- Fusionne un ou plusieurs tableaux
$result = array_merge ($array1, $array2);


Cette fonction (et son pendant « récursif » qui ne me semble pas être ce
qui t'intéresse) accepte un nombre quelconque de tableaux. Tu as aussi
l'opérateur « + », que je ne connaissais pas, mais que j'ai découvert en
lisant la doc pour te répondre :
<http://fr.php.net/manual/fr/language.operators.array.php>.

Bref, mon problème est que je ne connais pas le nombre de tableau à
fusionner !! sans doute faut-il faire une fonction ?


Il faut bien que tu connaisses le nombre de tableaux d'une façon ou
d'une autre, ou alors peut-être sont-ils eux-mêmes rassemblés dans
un unique tableau ? Tu peux faire une fonction à nombre variable
d'arguments, mais alors tu es dans le même cas que array_merge().
Sinon, si ton point d'entrée est un tableau de tableaux, alors
effectivement une fonction pourrait t'être utile.

par exemple un truc du genre :

function array_merge_array($array_array)
{
$array_result = array();
foreach ($array_array as $one_array) {
// voir si on peut utiliser += pour simplifier
$array_result = $array_result + $one_array;
}
return $array_result;
}

--
Olivier Miakinen
Troll du plus sage chez les conviviaux : le nouveau venu, avec
son clan, s'infiltre dans les groupes de nouvelles. (3 c.)

Avatar
Alextophi
ok, je reprends en + simple:

j'ai un tableau : $t

Au final je veux passer $t[1],$t[2],$t[3] en paramètre à
'array_merge()' pour fusionner $t[1]avec $t[2] puis avec $t[3], etc
....

ch.
Avatar
CrazyCat
Ne peux tu pas lire tes tableaux et les ajouter dans ton tableau final?
<?
var $result = array();
function combine_tableau($tableau) {
global $result;
foreach ($tableau as $key => $value) {
array_unshift($result, $value);
}
}
?>
Et ensuite, tu n'as qu'à appeler combine_tableau($tab1),
combine_tableau($tab3), ...

Bon, je ne garantie pas le résultat, mais ça me semble le plus simble
Avatar
Olivier Miakinen

j'ai un tableau : $t

Au final je veux passer $t[1],$t[2],$t[3] en paramètre à
'array_merge()' pour fusionner $t[1]avec $t[2] puis avec $t[3], etc


Voir ma réponse de 15 h 26 (heure française).

--
Olivier Miakinen
Troll du plus sage chez les conviviaux : le nouveau venu, avec
son clan, s'infiltre dans les groupes de nouvelles. (3 c.)

Avatar
Decryptus
Peut-être et j'espère que les explications précédentes sont
satisfaisantes, mais j'ai tjs du mal à saisir, il y a quoi dans tes
tableaux ? exemple dans $t[0] et $t[1], il y a une chaine de
caractères ? un numérique ? les deux ?

Le but finalement, c'est quoi ? Ca doit donner quoi comme résultat ?

Un exemple concret de ce que tu as au départ et ce que tu veux à la
fin, serait à mon avis plus explicite et on pourrait te diriger vers
la meilleure solution ;)