Combiner deux array

Résolu/Fermé
Nimajneb Messages postés 32 Date d'inscription mercredi 21 février 2007 Statut Membre Dernière intervention 18 août 2015 - Modifié par Nimajneb le 12/06/2014 à 12:10
Nimajneb Messages postés 32 Date d'inscription mercredi 21 février 2007 Statut Membre Dernière intervention 18 août 2015 - 12 juin 2014 à 16:02
Bonjour,

J'ai deux array.
J'aimerai que la valeur de l'array 1 devienne l'objet dans lequel est la valeur de l'array 2.

Exemple :

Mes deux array vue par un var_dump sont(qui sont remplies automatiquement en amont de mon prog) :

array (size=3)
0 => string 'banane' (length=6)
1 => string 'fraise' (length=6)
2 => string 'kiwi' (length=4)

array (size=3)
0 => string 'jaune' (length=5)
1 => string 'rouge' (length=5)
2 => string 'vert' (length=4)

Mon but est d'obtenir un var_dump final qui sera :

array (size=3)
0 =>
object(stdClass)[1]
public 'banane' => string 'jaune' (length=5)
1 =>
object(stdClass)[2]
public 'fraise' => string 'rouge' (length=5)
2 =>
object(stdClass)[3]
public 'kiwi' => string 'vert' (length=4)

NB : Les clés sont toujours dans le bonne ordre. C'est-à-dire que les clés des valeurs des deux arrays sont toujours les bonnes clés des bonnes valeurs que je veux associés : 0 avec 0, 1 avec 1 etc... .

NB2 : Je ne sais pas à l'avance combien j'ai de valeur dans mes tableaux. Toujours est-il que j'en aurai toujours autant dans une array que dans l'autre bien sûr !

Est-ce possible ? Je suis bloqué. MERCI

2 réponses

Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 525
12 juin 2014 à 14:22
Salut,

Voici une solution possible :

$tab1 = array('banane', 'fraise', 'kiwi');

$tab2 = array('jaune', 'rouge', 'vert');

$arrayAssoc = array_combine($tab1, $tab2);
var_dump($arrayAssoc); // array(3) { ["banane"]=> string(5) "jaune" ["fraise"]=> string(5) "rouge" ["kiwi"]=> string(4) "vert" } 


$arrayObjects = array();

foreach ($arrayAssoc as $key => $value) {
	$arrayObjects[] = (object) array($key => $value);
}

echo '<pre>';
var_dump($arrayObjects);
var_dump($arrayObjects[0]->banane);
echo '</pre>';


Bonne journée
1
Nimajneb Messages postés 32 Date d'inscription mercredi 21 février 2007 Statut Membre Dernière intervention 18 août 2015 1
12 juin 2014 à 16:01
Merci à vous deux !!!!

J'avais bien testé cette fonction array_combine mais sans succès, en fait j'avais dû me planter dans la syntaxe.

En tout cas un grand MERCI :)

Bonne journée !!
0
Une autre tres simple comme tu le dit les cle sont dans le bonne ordre :

$tab1 = array('banane', 'fraise', 'kiwi');
$tab2 = array('jaune', 'rouge', 'vert');

$tableaufinal = array();

//Parcour d'un des 2 tableaux tant qu'il y a des cases
for ($i=0;$i<count($tab1);$i++)
{
//ici tu creeait tes valeurs :
$tableaufinal[] = array($tab1[$i] => $tab2[$i]);
}

0
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 525
12 juin 2014 à 14:45
Autant utiliser la fonction array_combine : https://www.php.net/manual/fr/function.array-combine.php
Mais le résultat attendu ici est un tableau d'objet, et pas un tableau de tableau associatif ;)
0
Nimajneb Messages postés 32 Date d'inscription mercredi 21 février 2007 Statut Membre Dernière intervention 18 août 2015 1
Modifié par Nimajneb le 12/06/2014 à 16:02
J'ai utilisé array_combine. Merci qd même pour ton aide Samy ;) !
0