Page 1 sur 1

Recomposer un tableau multi-dimensionnel

Posté : 29 mai 2012, 17:02
par kny
Bonjour!
Sous ce nom barbare voici ma problématique:

J'ai un tableau de cette structure:

Code : Tout sélectionner

Array ( [0] => Array ( [id] => 1 [content] => contentA ) [1] => Array ( [id] => 2 [content] => contentB ) )
Et mon but est de le recomposer de la sorte

Code : Tout sélectionner

Array ( [id] => Array ( [0] => 1 [1] => 2 ) [content] ( [0] => contentA [1] => contentB ) )
En soit, j'ai écrit cette function:

Code : Tout sélectionner

function getDatas () { $result_array = array(); $keys = array_keys ( $mymultiarray[0] ); foreach ( $mymultiarray as $rows ) { foreach ( $keys as $key ) { array_push ( $result_array[$key], $rows[$key] ); } } return $result_array;
Si j'ai écrit ce code, c'est parce que je n'ai pas trouvé de solution par le biais des méthodes natives de php, mais c'est probablement parce-que je ne l'ai pas vu, aussi quelqu'un aurait-il une autre solution? Un peu plus propre, parce que 3 foreach, dont 2 imbriqués...

En vous remerciant!

Re: Recomposer un tableau multi-dimensionnel

Posté : 29 mai 2012, 22:51
par bostak
salut,

as tu essayer de faire un truc du genre :

Code : Tout sélectionner

$array = array(); as tu essayé de faire un while ($donnees = mysql_fetch_assoc($requete)) { array_push($array, array($donnees[' '], etc ...)); } return $array;
jespère que sa pourra t'aider

a+

Re: Recomposer un tableau multi-dimensionnel

Posté : 30 mai 2012, 08:58
par sirakawa
Un simple élément de solution simple:
<?PHP
function parcours ($tableau)
{
   $resultat = array();
   $nb_lignes = count ($tableau);
    foreach ($tableau as $ligne)
   {
      $content = $ligne['content'];
      $id = $ligne['id'];
      print "<br>$id $content";
   }
  }
$tableau =
array
    (
        array
            (
                "id" => 1,
                "content" => "contentA"
            ),
        array
            (
                "id" => 2,
                "content" => "contentB"
            )
    );
print_r($tableau);
parcours($tableau);
?>

Re: Recomposer un tableau multi-dimensionnel

Posté : 30 mai 2012, 13:48
par kny
> Bostak

Ta solution ne m'est pas accessible du fait que je puisse connaître à l'avance les clés du tableau, mais aussi du fait que je ne peux faire de requêtes.
Mon but est de partir d'un tableau et d'arriver à un nouveau tableau.

> Sirakawa

Je te remercie pour ta participation, mais cela ne répond malheureusement pas à mon souci.
Parcourir le tableau ne me pose pas de souci, et l'afficher non plus.
La problématique, vraiment, comme je l'ai souligné pour Bostak, est de partir d'un tableau dont les clés de second niveau peuvent être changeante, et le nombre d'entrées également, pour ré-obtenir un nouveau tableau, non plus architecturé par le nombre d'entrées mais par les clés...

Merci à vous tout de même!
Si vous avez cependant d'autres pistes, idées, avis, ils sont les bienvenue! :)

Re: Recomposer un tableau multi-dimensionnel

Posté : 31 mai 2012, 09:59
par sirakawa
Il est bien évident que dès lors que l'on parcourt un tableau, on est capable d'en construire un autre à partir des éléments trouvés:
Soit:
T1:
a1:11, a2:12, a3:13
b1:21,b2:22,,b3:23
lire a1:11 permet de constituer dans T2
T2[1][1] = "a1" et T2[2][1] = 11

Re: Recomposer un tableau multi-dimensionnel

Posté : 31 mai 2012, 13:51
par kny
Je n'arrive semble-t-il pas à me faire comprendre.
Ma solution en l'état fonctionne.
Ce que je recherche, c'est s'il existe une solution/function toute prête de PHP pour effectuer ce que je demande.
Par exemple, pour fusionner deux tableaux, l'on peux écrire notre propre function, ou effectuer un array_merge.
Ma question est donc, existe-t-il un équivalent à ce code sous la forme d'une function in-the-box-by-php :D

Re: Recomposer un tableau multi-dimensionnel

Posté : 31 mai 2012, 18:40
par AB
Ce que je recherche, c'est s'il existe une solution/function toute prête de PHP pour effectuer ce que je demande.
Clairement non.
Par exemple, pour fusionner deux tableaux, l'on peux écrire notre propre function, ou effectuer un array_merge.
Ou encore utiliser l'opérateur + (faut pas l'oublier car cela peut-être utile pour un comportement différent de array_merge)

Bah sinon pour ton code du moment qu'il est fonctionnel... On pourrait éventuellement chercher à faire mieux (pas certain que cela soit facile) mais uniquement si ton tableau est très gros, sinon ça vaut pas le coup.

Si les questions étaient claires

Posté : 31 mai 2012, 19:00
par sirakawa
on perdrait moins de temps:
Si j'ai écrit ce code, c'est parce que je n'ai pas trouvé de solution par le biais des méthodes natives de php, mais c'est probablement parce-que je ne l'ai pas vu, aussi quelqu'un aurait-il une autre solution? Un peu plus propre, parce que 3 foreach, dont 2 imbriqués...
Une autre solution ne signifie pas que ce qui est cherché est une fonction native ou un assemblage desdites...

Re: Recomposer un tableau multi-dimensionnel

Posté : 01 juin 2012, 13:27
par kny
Clairement non.
Cela me conforte donc.
Une autre solution ne signifie pas que ce qui est cherché est une fonction native ou un assemblage desdites...
Navré, je me suis mal exprimé dès le départ.

Je reste donc avec ma solution pour l'immédiat. Elle fonctionne et ne consomme pas énormément tant que l'on reste dans des tableaux qui ne sont trop imposants.
En vous remerciant.