2012-01-29 6 views
0

je dois combiner 2 tableaux sous la même clé en annexant Array2-Array1:Deux tableaux comibation sous la même clé

Array1 
(
    [0] => value1 
    [1] => value2 
    [2] => value3 
    [3] => value4 
    [4] => value5 
    [5] => value6 
    [6] => value7 
) 
Array2 
(
    [0] => add1 
    [1] => add2 
    [2] => add3 
    [3] => add4 
    [4] => add5 
    [5] => add6 
    [6] => add7 
) 

afin que Array3 ressemble à ceci:

Array1 
(
    [0] => value1add1 
    [1] => value2add2 
    [2] => value3add3 
    [3] => value4add4 
    [4] => value5add5 
    [5] => value6add6 
    [6] => value7add7 
) 

J'ai cherché sur php.net mais je n'ai rien trouvé. Toute aide serait très appréciée! Merci d'avance pour votre contribution.

Répondre

4

array_mapdocs fait une boucle superflue dans ce cas:

$arr1 = array('value1','value2','value3'); 
$arr2 = array('add1','add2','add3'); 
$merged = array_map(function($x, $y) { return $x . $y; }, $arr1, $arr2); 

Si vous n'êtes pas avoir PHP5.3 + (ou vous n'aimez pas lambda) vous devrez définir la fermeture dans une fonction séparée et référencer le nom de cette fonction à l'intérieur de votre array_map appel.

+0

Fonctionne comme un charme. J'ai accepté le vôtre en raison de ** array_map ** Merci! – thpoul

+0

Pas de problème. Il n'est jamais mauvais d'éviter une boucle si vous pouvez accomplir la même chose avec une fonction de tableau intégrée! – rdlowrey

+0

Solution élégante! +1 – Czechnology

1

soemthing comme ceci:

foreach($array1 as $k=> $value){ 
    $array3[$k] = $value . $array2[$k]; 
} 
print_r($array3); 

Rappelez-vous, cela ne vous prendra autant d'articles que contient $array1. Si $array2 est plus grand, les autres valeurs seront ignorées.

+0

Merci pour votre réponse ultra-rapide! – thpoul

2

Il suffit de faire une boucle:

if (count($arr1) == count($arr2)) 
{ 
    $arr3 = array(); 
    foreach ($arr1 as $key => $val) 
    $arr3 = $val . $arr2[$key]; 
} 
else 
{ 
    echo "Arrays should be of same size!"; 
    $arr3 = array(); 
    for ($i = 0, $i < min(count($arr1),count($arr2)); $i++) 
    $arr3 = $arr1[$i] . $arr2[$i]; 
} 

(mise en œuvre exacte devrait dépendre de vos valeurs d'entrée)

+0

Tout d'abord merci et konsolenfreddy pour vos réponses extrêmement rapides. Les deux exemples semblent fonctionner parfaitement, mais un ajout était nécessaire ** [] ** '$ arr3 [] = $ val. $ arr2 [$ key]; 'J'accepterai la réponse de rdlowrey parce qu'elle fonctionne mieux dans mon cas (mes tableaux ont la même taille) mais la vôtre a une boucle complète' if' qui pourrait aider les autres dans le futur. Je suis upvoting tous les 3 d'entre vous. Je vous remercie! – thpoul

+0

@triump, 'array_map' de rdlowrey est une solution plus élégante;) – Czechnology

Questions connexes