Bonjour,

Voila je rencontre un petit problème avec mon code.

j'ai deux tableau $array1 et $array2 qui sont remplit comme ça

$array1=Array("piece1","piece2","piece3");
$array2=Array("1","4","6");

je veux mettre les contenus de ces tableaux dans un $array3 de tel façon que j'obtiens
$array3=Array("piece1"=>"1","piece2"=>"4",piece3=>"6")
j'ai beaucoup chercher mais j'arrive pas à trouver une solution
je souhaite que vous m'aider et merci d'avance

6 réponses


AlexJM
Réponse acceptée

Bonsoir,
Vois du côté d'array_combine ;)

ouiiiiiii merci alex
mais en faite j'ai un petit probléme
aprés un var_dump le programme m'affiche ceci

piece de rechange
array (size=5)
0 => string 'demarreur' (length=4)
1 => string 'bougie' (length=3)
2 => string 'rotule pivot' (length=3)
3 => string 'Alternateur' (length=11)
4 => string 'parbrise' (length=3)
nombre de pieces
array (size=5)
0 => string '4' (length=1)
1 => string '1' (length=1)
2 => string '2' (length=1)
3 => string '3' (length=1)
4 => string '1' (length=1)
array (size=3)
'demarreur' => string '4' (length=1)
'bougie' => string '1' (length=1)
'Alternateur' => string '3' (length=1)
je ne sait pas pour quoi le 3 éme tableau prend que 3 cases malgré que j'ai 5 valeur dans les 2 tableaux :/

Salut,

C'est très simple, il suffit d'une boucle :

function createArray($arrKeys, $arrValues) {
    // on vérifie qu'il y a autant de keys que de values
    if (count($arrKeys) !== count($arrValues)) {
        throw new Exception('There must be the same number of keys and values.');
    }

    $res = [];

    // on boucle sur l'array des keys
    foreach ($arrKeys as $key => $value) {
        // on utilise comme clé la valeur dans l'array des keys et comme valeur la valeur dans l'array des values
        $res[$value] = $arrValues[$key];
    }

    return $res;
}

Je n'ai pas vérifié que les arrays keys et values avaient les mêmes clés. Il suffirait d'ajouter un test dans la boucle pour vérifier que la clé existe dans l'array des values.

(J'avais oublié à quel point c'était horrible d'écrire du PHP. :D)

Étonnant, puisque quand je fais :

$a = ['demarreur', 'bougie', 'rotule pivot', 'alternateur', 'parbrise'];

var_dump($a);

$b = ['4', '1', '2', '3', '1'];

var_dump($b);

$c = array_combine($a, $b);

var_dump($c);

J'obtiens bien

array (size=5)
  0 => string 'demarreur' (length=9)
  1 => string 'bougie' (length=6)
  2 => string 'rotule pivot' (length=12)
  3 => string 'alternateur' (length=11)
  4 => string 'parbrise' (length=8)
array (size=5)
  0 => string '4' (length=1)
  1 => string '1' (length=1)
  2 => string '2' (length=1)
  3 => string '3' (length=1)
  4 => string '1' (length=1)
array (size=5)
  'demarreur' => string '4' (length=1)
  'bougie' => string '1' (length=1)
  'rotule pivot' => string '2' (length=1)
  'alternateur' => string '3' (length=1)
  'parbrise' => string '1' (length=1)

Même résultat pour moi. array_combine est la solution.

merci infiniment tleb et Alex c'est resolu :)