2010-12-06 6 views
2

Voici mon tableaupousser un élément à chaque tableau dans un tableau multidimensionnel en PHP?

$myArr = array(array('one', 'two'), array('one', 'two')); 

Je voudrais ajouter un élément à chaque tableau dans la $ myArr. Je ne veux pas boucler chaque tableau à l'intérieur et ajouter cet élément. Existe-t-il un moyen plus rapide d'y parvenir en utilisant array_map ou array_walk .. de préférence avec une ligne de code?

tableau de résultat devrait être comme

$myArr = array(array('one', 'two','three'), array('one', 'two','three')); 

Merci un bouquet

a obtenu, Kudos à @strager

$myvar = 'Three'; 

$myArr = array_map(function ($subarray) { global $myvar; $subarray[] = $myvar; return $subarray;}, $myArr); 

Répondre

2

Avec array_walk:

array_walk($myArr, create_function('&$subarray', '$subarray[] = "three";')); 

Avec array_map:

$myArr = array_map(create_function('$subarray', '$subarray[] = "three"; return $subarray;'), $myArr); 

Avec des fonctions anonymes un array_map (non testé, je n'ai pas accès à PHP5.3):

$myArr = array_map(function ($subarray) { 
    $subarray[] = "three"; 
    return $subarray; 
}, $myArr); 

Ou bien sûr, la meilleure solution (pour PHP < 5.3):

function pushToEndOfSubarrays($array, $item) { 
    $ret = array(); 

    foreach ($array as $key => $subarray) { 
     $subarray[] = $item; 
     $ret[$key] = $subarray; 
    } 

    return $ret; 
} 

$myArr = pushToEndOfSubarrays($myArr, 'three'); 
+0

Wow! qui a fait le travail, merci beaucoup strager – Naresh

+0

J'utilise: array_walk ($ myArr, create_function ('& $ subarray', '$ subarray [] = "trois";')); Comment puis-je passer mon élément varible à ajouter dans create_function? C'est une valeur dynamique plutôt que du texte comme «trois» – Naresh

+0

@Naresh, C'est là que les choses deviennent difficiles. Utilisez simplement l'une des deux dernières suggestions dans ma réponse. – strager

3

vous pouvez utiliser array_push() fonction pour le tableau de poussée dans un tableau

int array_push (array &$array , mixed $var [, mixed $... ]); 

Cela peut vous aider en tant que vos besoins.

merci.

+0

N'aurait-on pas encore besoin d'une boucle pour cela? sinon, il ajouterait simplement la valeur à la fin du tableau parent et non les enfants. –

+0

Le questionneur veut pousser un élément dans chaque tableau à l'intérieur de '$ myArr'. Ils ne semblent pas vouloir pousser un nouveau tableau vers '$ myArr'. – strager

+0

Merci pour la réponse, mais je veux juste ajouter un élément à tous les tableaux dans mon tableau principal .. ne pas pousser un élément dans le tableau – Naresh

Questions connexes