2013-06-22 7 views
0

J'ai une fonction qui obtient de la BD toutes les données des utilisateurs de différentes tables. J'utilise PDO et ce qui renvoie pour chaque SELECT est un associative array.Mélanger les tableaux associatifs

Ce que je veux, c'est que la fonction retourne un seul array incluant toutes les informations extraites de la base de données. Donc, un grand array avec toutes les données de l'utilisateur.

Le problème est que je reçois des erreurs parce que je ne peux pas simplement fusionner plus arrays ou je vais avoir Array to string conversion error.

Comment puis-je mélanger tous les arrays dans un array compréhensible?

function userInfo($uID, $pdo) { 
    $user = PDOselect('user', '*', array('id_user'=> $uID), $pdo); 
    $user_registration = PDOselect('user_registration', '*', array('id_user'=> $uID), $pdo); 
    $user_addfields_anagraphic = PDOselect('user_addfields_anagraphic', '*', array('id_user'=> $uID), $pdo); 
    $user_addfields_legal = PDOselect('user_addfields_legal', '*', array('id_user'=> $uID), $pdo); 
    $user_addfields_public = PDOselect('user_addfields_public', '*', array('id_user'=> $uID), $pdo); 
    return ..... 
} 
+0

vous pouvez résoudre ce problème. 1 créer une instruction SQL unique pour retourner un ensemble de données ou avoir une fonction pour construire un seul tableau en itérant sur les multiples tableaux – DevZer0

Répondre

2

Vous pouvez utiliser + opérateur ou array_merge() concaténer deux tableaux.

+ opérateur: Ajoute dans le premier tableau les éléments du second. Pour les clés qui existent dans les deux tableaux, les éléments correspondants du second tableau seront ignorés.

array_merge(): Ajoute dans le premier tableau les éléments du second. S'il y a des éléments dans les deux tableaux avec la même clé, le comportement de ces fonctions dépend de:

  1. la clé est numérique: l'élément sera ajouté et la clé renuméroté
  2. la clé est une chaîne: la valeur ultérieure remplacera la première .

Exemple:

// array ([colour] => red, [0] => 2, [1] => 4) 
$array1 = array("colour" => "red", 2, 4);  

// array ([0] => a, [1] => b, [colour] => green, [shape] => circle, [2] => 4 
$array2 = array("a", "b", "colour" => "green", "shape" => "circle", 4); 

En utilisant (+):

$result = $array1 + $array2; 
// $result: array ([colour] => red, [0] => 2, [1] => 4, [shape] => circle, [2] => 4) 

aide (array_merge):

$result = array_merge($array1, $array2); 
// $result: array ([colour] => green, [0] => 2, [1] => 4, [2] => a, [3] => b, [shape] => circle, [4] => 4) 

J'espère que cela sera utile pour vous.

0

On dirait que vous devriez faire quelque chose comme ceci:

function userInfo($uID, $pdo) { 
    return array(
     'user' => PDOselect('user', '*', array('id_user'=> $uID), $pdo), 
     'user_registration' => PDOselect('user_registration', '*', array('id_user'=> $uID), $pdo, 
     'user_addfields_anagraphic' => PDOselect('user_addfields_anagraphic', '*', array('id_user'=> $uID), $pdo, 
     'user_addfields_legal' => PDOselect('user_addfields_legal', '*', array('id_user'=> $uID), $pdo, 
     'user_addfields_public' = PDOselect('user_addfields_public', '*', array('id_user'=> $uID), $pdo, 
     // etc.. 
    ); 
} 
Questions connexes