php – SQL连接结果到codeigniter中的对象

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了php – SQL连接结果到codeigniter中的对象脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
好的,有点背景,

>刚进入codeignITer
>不是sql服务器端脚本的粉丝
>我知道加入的是什么
>我第一次有一个多对多的数据库

这是因为连接通常具有以下示例作为结果.但我想解析这个,而不必构建代码来忽略重复.这是一个3表连接样本.当我加入更多表时,重复值的问题会增加

table1.authorid    table1.authorname    table2.Books     table3.favorited
       1                 john           john's book 1        jean
       1                 john           john's book 1        joe
       1                 john           john's book 2        ken
       1                 john           john's book 2        mark
       2                 mark           mark's book 1        alice
       2                 mark           mark's book 1        ted
       2                 mark           mark's book 2        Sarah
       2                 mark           mark's book 2        denise

在codeigniter(或普通PHP)中是否有一种方法可以获取此数组形式并将其转换为类似json(并像json一样解析)

$result = [
    {
        'authorid':1,'authorname':'john','books':['john's book1','john's book2'],'favorited':['jean','joe','ken','mark']
    },{
        'authorid':2,'authorname':'mark','books':['mark's book1','mark's book2'],'favorited':['alice','ted','Sarah','denise']
    }
]

更新:这不限于此深度的对象/数组(如示例中所示).它可以更深入(数组中的数组,对象中的数组,数组中的对象,对象中的对象)

// First,we need the sql results in the $result_array VARiable
$sql = 'SELECT ...';  // your sql command
$result_array = $this->db->query($sql)->result_array();  // codeigniter code

// here the real answer begins
$result = array();

foreach ($result_array as $row)
{
    if (!isset($result[$row['authorid']])
    {
        $author = new StdClass();
        $author->authorid = $row['authorid'];
        $author->authorname = $row['authorname'];
        $author->books = array($row['books']);
        $author->favorited = array($row['favorited']);
        $result[$row['authorid']] = $author;
    }
    else
    {
        if (!in_array($row['books'],$result[$row['authorid']]->books))
        {
            $result[$row['authorid']]->books[] = $row['books'];
        }
        if (!in_array($row['favorited'],$result[$row['authorid']]->favorited))
        {
            $result[$row['authorid']]->favorited[] = $row['favorited'];
        }
    }
}

$result = array_values($result);
echo json_encode($result);

脚本宝典总结

以上是脚本宝典为你收集整理的php – SQL连接结果到codeigniter中的对象全部内容,希望文章能够帮你解决php – SQL连接结果到codeigniter中的对象所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。