混合关联数组

时间:2013-06-22 10:13:22

标签: php

我有一个函数可以从DB获取来自不同表的用户的所有数据。 我使用的是PDO,每个SELECT的回报是associative array

我想要的是该函数只返回一个array,包括从DB中获取的所有信息。这是一个包含所有用户数据的大array

问题在于我收到错误,因为我不能简单地合并更多arrays或我会Array to string conversion error

如何将所有arrays混合在一个可理解的array

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 .....
}

2 个答案:

答案 0 :(得分:2)

您可以使用 + 运算符或 array_merge()来连接两个数组。

+运营商: 将第二个元素追加到第一个数组中。对于存在于两个数组中的键,将忽略第二个数组的匹配元素。

<强> array_merge(): 将第二个元素追加到第一个数组中。如果两个数组中的元素具有相同的键,则此函数的行为取决于:

  1. 键是数字:将追加元素和键 重新编号
  2. 键是一个字符串:后面的值将替换掉 第一。
  3. 示例:

    // 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);
    

    使用(+):

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

    使用(array_merge):

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

    我希望这对你有用。

答案 1 :(得分:0)

看起来你应该这样做:

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..
    );
}