我有一个函数可以从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 .....
}
答案 0 :(得分:2)
您可以使用 + 运算符或 array_merge()来连接两个数组。
+运营商: 将第二个元素追加到第一个数组中。对于存在于两个数组中的键,将忽略第二个数组的匹配元素。
<强> array_merge():强> 将第二个元素追加到第一个数组中。如果两个数组中的元素具有相同的键,则此函数的行为取决于:
示例:
// 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..
);
}