首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >理解stdClass对象

理解stdClass对象
EN

Stack Overflow用户
提问于 2015-04-07 18:37:33
回答 2查看 123关注 0票数 1

好吧,我对PHP中的stdClass对象“有点陌生”,我正在做一些实验,以了解如何导出数据/创建API,以便从数据库中获取相关信息。

因此,我想要的是让用户访问一些信息,比如数据库或XML文件(而不是所有的部分)。(在本例中,它是一个本地sqlite3文件),我希望以JSON-格式提供给用户数据。

我需要帮忙做什么?简而言之-我想从你那里得到一些建议,以比我已经得到的更聪明的方式来解决“问题”。(我想我的方式有点.丑陋的解决方案。

这是我导出的结构的当前导出(没有JSON-encode):http://codepaste.net/965tgj

我是通过以下方式在php文件中这样做的:( $users是sqlite3.db中的任意数据,我非常了解它的使用方法,所以我压缩了代码:)

代码语言:javascript
复制
$users = array(
    array(
        "id" => 1,
        "user" => "Xavizus"
    ),
    array(
        "id" => 2,
        "user" => "Zariel"
    )
);

$obj = new stdClass();
$obj->auth = true;
$obj->usercount = 2;
$obj->users = array();

for($i =0; $i < $obj->usercount; $i++){
        $obj->users[] = new stdClass();
}

for($i = 0; $i < $obj->usercount; $i++) {
        $obj->users[$i]->id = $users[$i]['id'];
        $obj->users[$i]->user = $users[$i]['user'];
}

print_r($obj);

有更干净的方法吗?还是这是我能追求的最干净的?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-04-07 18:47:24

这将更容易使用(object)来转换数组:

代码语言:javascript
复制
$obj = new stdClass();
$obj->auth = true;
$obj->usercount = count($users);
$obj->users = $users;

foreach($obj->users as &$user) {
    $user = (object)$user;
}

不过,我想看看@jeroen的评论:“您应该定义自己的类,并让构造函数接受初始化值。这将更加简洁。”

代码语言:javascript
复制
class users {

    function __construct($users, $auth=true) {
        $this->auth = $auth;
        $this->usercount = count($users);        

        foreach($users as $user) {
            $this->users[] = (object)$user;
        }
    }
}

$obj = new users($users);

在从fetchArray()中分配行数组时,还可以将该行数组强制转换为对象。

票数 2
EN

Stack Overflow用户

发布于 2015-04-07 18:46:33

你可以在一个循环中完成,对吧?

而不是

代码语言:javascript
复制
for($i =0; $i < $obj->usercount; $i++){
        $obj->users[] = new stdClass();
}

for($i = 0; $i < $obj->usercount; $i++) {
        $obj->users[$i]->id = $users[$i]['id'];
        $obj->users[$i]->user = $users[$i]['user'];
}

你可以这样做

代码语言:javascript
复制
for($i =0; $i < $obj->usercount; $i++){
        $newObject = new stdClass();
        $newObject->id = $users[$i]['id'];
        $newObject->user = $users[$i]['user'];
        $obj->users[] = $newObject;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29498777

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档