Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 混合联想阵列_Php - Fatal编程技术网

Php 混合联想阵列

Php 混合联想阵列,php,Php,我有一个函数,可以从数据库中获取来自不同表的用户的所有数据。 我使用的是PDO,每个SELECT返回的是一个关联数组 我想要的是,该函数只返回一个数组,包括从数据库获取的所有信息。因此,一个包含所有用户数据的大型数组 问题是我会出错,因为我不能简单地合并更多的数组,否则我会出现数组到字符串的转换错误 如何将所有数组混合到一个可理解的数组 function userInfo($uID, $pdo) { $user = PDOselect('user', '*', array('id_use

我有一个函数,可以从数据库中获取来自不同表的用户的所有数据。 我使用的是
PDO
,每个
SELECT
返回的是一个
关联数组

我想要的是,该函数只返回一个
数组
,包括从数据库获取的所有信息。因此,一个包含所有用户数据的大型
数组

问题是我会出错,因为我不能简单地合并更多的
数组
,否则我会出现
数组到字符串的转换错误

如何将所有
数组
混合到一个可理解的
数组

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

看起来你应该这样做:

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

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

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

数组_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);
    
    使用(+):

    使用(数组\合并):


    我希望这对你有用。

    你可以用两种方法解决这个问题。1创建一个sql语句以返回一个数据集,或创建一个函数以通过迭代多个数组来构造单个数组
    $result = $array1 + $array2;
    // $result: array ( [colour] => red, [0] => 2, [1] => 4, [shape] => circle, [2] => 4 )
    
    $result = array_merge($array1, $array2);
    // $result: array ( [colour] => green, [0] => 2, [1] => 4, [2] => a, [3] => b, [shape] => circle, [4] => 4 )