PHP将2个数组变量合并为1个

PHP将2个数组变量合并为1个,php,arrays,Php,Arrays,我希望,我的标题是正确的。我想了解如何将2个数组合并为1个数组 我想做的简单示例: 我有两个数据库表,比如blog_posts和users 我想从blog_帖子和foreach帖子中选择数据,我想为“addedby”选择诸如用户名、用户图片等信息 使用echo,我只显示了和 我想返回这些值,就像在mvc模式中一样。我是如何阅读不同的主题的,我必须将数据存储到数组中,才能返回它们,使用一个数组没有问题,但我不明白如何才能同时返回它们 public function getBlogPostList(

我希望,我的标题是正确的。我想了解如何将2个数组合并为1个数组

我想做的简单示例:

我有两个数据库表,比如blog_posts和users

我想从blog_帖子和foreach帖子中选择数据,我想为“addedby”选择诸如用户名、用户图片等信息

使用echo,我只显示了

我想返回这些值,就像在mvc模式中一样。我是如何阅读不同的主题的,我必须将数据存储到数组中,才能返回它们,使用一个数组没有问题,但我不明白如何才能同时返回它们

public function getBlogPostList(){
    try{

        $sortby = "SELECT * FROM blog_posts";

        $stmt = $this->connCommunity->prepare("$sortby");
        $stmt->execute();
        $result = $stmt->fetchAll();

        foreach($result as $post){

            $addedby = $post['addedby'];
            $stmt2 = $this->connUsers->prepare("SELECT * FROM users WHERE id=('$addedby')");
            $stmt2->execute();
            $result2 = $stmt2->fetchAll();

            $blog_post = array();
            foreach($result as $post) {
                $blog_post[] = $post;
            }

            foreach($result2 as $user) {
                array_merge($blog_post, $user);
            }
        }

        return $blog_post;

    }
    catch(PDOException $e) {
        echo $e->getMessage();
    }
}
并显示如下阵列:

<?php

    foreach ($BlogModel as $BlogModel)
    {
        echo '<tr><td><a href="index.php?id='.$BlogModel['id'].'">'.$BlogModel['id'].'</a></td><td>'.$BlogModel['title'].'</td><td>'.$BlogModel['username'].'</td></tr>';
    }


?>

首先从一个简单的查询开始,它完成了所有的工作

此查询示例假设blog_posts表中具有userId的列是user_id,请将此列替换为正确的列。用正确的数据库名替换我的示例数据库名
communitydb
usersdb

$sortby = "SELECT * FROM communitydb.blog_posts p LEFT JOIN usersdb.users u ON u.id = p.user_id";
在此之后,只需返回第一个$stmt->fetchAll();你就完了。因此,函数getBlogPostList()中的大量代码是不必要的


通过循环,您可以循环结果。可能是在联接表时有重复的列名,如果是这种情况,还应该从users表中定义所需的列。例如
u.id as userid

如果您对sql连接语法做一点研究,就可以在一个查询中选择所有这些信息。这
foreach($result as$post){$blog\u post[]=$post;}
位于另一个foreach内部,该foreach也在处理
$result
第二个将消耗所有数组,因此外部循环将只运行一次ealso变量不需要引用,
$this->connccommunity->prepare($sortby)
要有效地使用prepared语句,您应该对它们进行参数化(如果您使用这种方法,但无论如何,
join
s会更好)。@RiggsFolly我认为sql join不会起作用,因为数据位于两个不同的数据库中,所以我将它们分别与connUsers和connComunity连接,如下所示($stmt2=$this->connUsers)不是这样,看看这个答案谢谢你的回答,但是..我认为sql连接不会起作用,因为数据位于两个不同的数据库中,所以我将它们分别与connUsers和connComunity连接,就像这里($stmt2=$this->connUsers)需要注意的是,第一个连接用户还必须具有对第二个数据库usertable的读取权限。请记住这一点。谢谢,这很有帮助。还有一个问题。我有相同的数据表列名。就像我在博客文章中有“id”,在用户中有“id”。现在当我尝试显示博客文章“id”它返回所有时间的用户id。我在回答中已经说过;)我将帮助您选择p.*,u.id作为userid,u.name作为username FROM非常感谢。现在我明白了。