Partage
  • Partager sur Facebook
  • Partager sur Twitter

Deux array, un en index l'autre en value

Sujet résolu
5 mai 2021 à 15:59:37

Bonjour,

J'ai deux arrays qui renvoie :
array 1 :
^ array:22 [
  0 => "nom"
  1 => "anim"
  2 => "bal"
  3 => "aza"
  4 => "chouquette"
  5 => "blue"
  6 => "pie"
  7 => "bateau"
  8 => "arbre"
  9 => "saine"
  10 => "cali"
]

 array2 :

^ array:2 [
  0 => array:11 [
    0 => "1er"
    1 => "2eme"
    2 => "4eme"
    3 => "2eme"
    4 => "2eme"
    5 => "23eme"
    6 => "2eme"
    7 => "51eme"
    8 => "2eme"
    9 => "81eme"
    10 => "2eme"
  ]

 J'aimerais faire un array qui prenne toutes les valeurs de l'un pour le mettre en index et toutes les values de l'autres pour le mettre en valeurs,
 un truc comme ça :

NewArray = [
'nom' => '1er',
'anim' => '2eme'
'bal' => '4eme'
]

J'ai tenté ça :

 $donnees =  isset($_POST['datas']) ? $_POST['datas'] : false;
        $nbDeFois =  isset($_POST['datasLength'] ) ? (int)$_POST['datasLength'] : false;

for ($x=0; $x<$nbDeFois ; $x++){
 $tab[$x] = [
           'nom' => $tab[$x][0],
           'anim' => $tab[$x][10],
           'bal' => $tab[$x][1],
           'aza' => $tab[$x][5],
           'chouquette' => $tab[$x][9],
           'blue' => $tab[$x][2],
           'pie' => $tab[$x][6],
           'bateau' => $tab[$x][3],
           'arbre' => $tab[$x][7],
           'saine' => $tab[$x][4],
           'cali' => $tab[$x][8],
           'oldId' => '',
           'nomfichier' => '',
       ];
}

Sans succés, si vous avez d'autres pistes ..





  • Partager sur Facebook
  • Partager sur Twitter
5 mai 2021 à 16:06:06

Salut

essayes voir de faire un truc du genre 

// imaginons que ton premier tableau est nommé $index et le second $valeur, et $tab le tableau final

$tab[$index[$x]] = $valeur[$x];


dans ta boucle. 

En théorie, ça devrait te donner ce que tu cherches.

-
Edité par Ryukotsei 5 mai 2021 à 16:07:35

  • Partager sur Facebook
  • Partager sur Twitter
5 mai 2021 à 16:19:45

Merci pour le coup de main rapide, je n'y aurais pas penser à faire ça ^^
Aprés avoir essayer j'ai eu ça :
^ array:2 [
  "nom" => array:11 [
    0 => "azza"
    1 => ""
    2 => ""
    3 => ""
    4 => "zaza"
    5 => ""
    6 => ""
    7 => ""
    8 => ""
    9 => ""
    10 => "dadaa"
  ]
  "anim" => array:11 [
    0 => "ddd"
    1 => "dd"
    2 => ""
    3 => ""
    4 => ""
    5 => ""
    6 => ""
    7 => ""
    8 => ""
    9 => ""
    10 => ""
  ]

Le array1[0] et array1[1] sont aller les deux sur array2[0] !
Devrais je rajouter une boucle for dans mon For ?

ps : pour info les "azza", "zaza" "dddd" sont des inputs que je remplis , d'ou les noms étranges!

-
Edité par PHotoPoki 5 mai 2021 à 16:20:59

  • Partager sur Facebook
  • Partager sur Twitter
5 mai 2021 à 16:21:54

Montre voir ton code actuel?

Ah d'accord, ça a créé un tableau à chaque fois pour chaque élément? 

-
Edité par Ryukotsei 5 mai 2021 à 16:23:14

  • Partager sur Facebook
  • Partager sur Twitter
5 mai 2021 à 16:33:34

Non enfaite , j'ai oublié de le préciser mais plusieurs tableaux de résultats peuvent apparaitrent !
dans données il peut y avoir de 1 à x tableaux de données
et dans le nbDeFois il peut y avoir juste 1 tableau.

$donnees =  isset($_POST['datas']) ? $_POST['datas'] : false;
        $nbEtiquettes =  isset($_POST['datasLength'] ) ? (int)$_POST['datasLength'] : false;
        $nbDeFois= isset($_POST['lesId']) ? $_POST['lesId'] : false;

for ($x=0; $x<$nbDeFois; $x++){
  $tab[$nbDeFois[$x]] = $donnees[$x];
}


  • Partager sur Facebook
  • Partager sur Twitter
5 mai 2021 à 16:39:09

Ooooooh d'accord je vois! 

Alors oui je pense qu'il faut rajouter une boucle. Le bout de code que je t'ai donné sert juste à faire le tableau comme tu veux, mais s'il y en a plusieurs, il faut faire la même manip pour chacun effectivement. Je serais tentée de dire que tu devrais englober la boucle existante dans celle que tu dois faire en plus. 

  • Partager sur Facebook
  • Partager sur Twitter
5 mai 2021 à 16:41:46

Salut

A tout hasard, regarde du côté de la fonction array_combine()

  • Partager sur Facebook
  • Partager sur Twitter
5 mai 2021 à 16:44:16

Ymox a écrit:

Salut

A tout hasard, regarde du côté de la fonction array_combine()


Fichtre diantre que je l'avais complètement oubliée celle-là
  • Partager sur Facebook
  • Partager sur Twitter
5 mai 2021 à 16:52:22

Ymox a écrit:

Salut

A tout hasard, regarde du côté de la fonction array_combine()

Je pense que ça pourrait m'être utile, merci à vous deux pour les conseils ! :)



-
Edité par PHotoPoki 5 mai 2021 à 16:53:14

  • Partager sur Facebook
  • Partager sur Twitter