Je sais que cela est facilement accompli avec un J'ai deux tableaux qui ressemblent à ceci: p> et j'ai besoin de quelque chose comme ce qui suit: p> est un moyen de pouvoir fusionner deux tableaux avec le foreach code>, puis un
pendant code> -> liste, etc. procédure, (je l'ai déjà accompli), mais je sens que je sens que Mon code est un peu sale et il ne ressemble pas à la meilleure solution ... Je cherche à utiliser des fonctions de réseau PHP natif pour effectuer ce qui suit:
ID code> Valeur (ou AY Autre) sans entrer dans un ensemble sans fin de
foreach code> S? P> P>
5 Réponses :
Utilisez array_merge_recursive () ou faire votre propre fonction (il peut être plus rapide) p>
Génial !, Merci pour cela, FYI: L'approche de la fonction fonctionne excellente tant que vous devez supprimer ces enregistrements qui ne se répètent pas sur les deux tableaux.
Cela ne répond pas techniquement à la question. @Osvaldom. Veut rejoindre en fonction de la valeur de l'ID, pas par les clés.
OK, supposons que vos tableaux sont appelés $ Arr1 et $R2, vous pouvez le faire:
<?php $newarray = Array(); foreach ($arr1 as $element=>$value){ $newarray = array_merge($arr1[$element],$arr2[$element]) } ?>
Comme rayon remarqué dans un commentaire, la réponse acceptée ne répond pas réellement à la question. J'étais incapable de trouver une réponse, j'ai donc créé la petite fonction utilitaire suivante: l'utiliser comme suit: p>
Plus utile .. génial :)
Ayez une belle à la fusion de tableaux comme une autre langue. C'est parce que PHP dispose d'éléments de tableau de numérotation automatique et de fusionnera ou remplacera différents éléments par des touches.
Maintenant, il est changé. P>
// array_fork public static function array_fork() { $args = func_get_args(); $result = array(); foreach ($args as $arr) { is_array($arr) || exit('[' . __METHOD__ . '] Each item must be an array.'); foreach ($arr as $key => $val) { if (is_array($val)) { // recursion !isset($result[$key]) && $result[$key] = array(); $result[$key] = self::array_fork($result[$key], $arr[$key]); continue; } if (is_numeric($key)) { if (!in_array($arr[$key], $result)) $result[] = $arr[$key]; } else $result[$key] = $arr[$key]; } } return $result; }
function custom_array_merge(&$array1, &$array2) { $result = Array(); foreach ($array1 as $key_1 => &$value_1) { // if($value['name']) foreach ($array2 as $key_1 => $value_2) { if($value_1['name'] == $value_2['name']) { $result[] = array_merge($value_1,$value_2); } } } return $result; } // Pass $array1, &$array2 and change the $value_2['name'] // name based on which u want to merge.
Les éléments sont-ils avec le même identifiant sur le même index dans les deux tableaux? En d'autres termes, si l'élément avec ID 5 est à l'index 3 dans la première matrice, il sera également à l'index 3 dans la deuxième matrice?