相关疑难解决方法(0)

为什么返回对象而不是数组?

我在WordPress中做了很多工作,我注意到有更多的函数返回对象而不是数组.除非您特别要求数组,否则数据库结果将作为对象返回.错误作为对象返回.在WordPress之外,大多数API都会为您提供一个对象而不是一个数组.

我的问题是,为什么他们使用对象而不是数组?在大多数情况下,它并不重要,但在某些情况下,我发现物体不仅难以加工而且能够缠绕我的头部.是否有使用对象的性能原因?

我是一名自学成才的PHP程序员.我有文科学位.如果我错过了计算机科学的一个基本方面,请原谅我.;)

php

83
推荐指数
8
解决办法
2万
查看次数

PHP中的值对象与关联数组

(这个问题使用PHP作为上下文,但不仅限于PHP.例如,任何内置哈希的语言也是相关的)

我们来看看这个例子(PHP):

function makeAFredUsingAssoc()
{
    return array(
        'id'=>1337,
        'height'=>137,
        'name'=>"Green Fred");
}
Run Code Online (Sandbox Code Playgroud)

与:

class Fred
{
    public $id;
    public $height;
    public $name;

    public function __construct($id, $height, $name)
    {
        $this->id = $id;
        $this->height = $height;
        $this->name = $name;
    }
}

function makeAFredUsingValueObject()
{
    return new Fred(1337, 137, "Green Fred");
}
Run Code Online (Sandbox Code Playgroud)

方法#1当然更简洁,但它可能很容易导致错误,例如

$myFred = makeAFredUsingAssoc();
return $myFred['naem']; // notice teh typo here
Run Code Online (Sandbox Code Playgroud)

当然,有人可能会争辩说$myFred->naem同样会导致错误,这是事实.然而,正式课程对我来说感觉更加僵硬,但我无法证明这一点.

使用每种方法的优点/缺点是什么?人们何时应该使用哪种方法?

php associative-array value-objects

38
推荐指数
4
解决办法
2万
查看次数

使用数组VS对象存储数据

可能重复:
我应该何时使用stdClass,何时应该在php5中使用数组oo代码?

使用两种结构中的一种比另一种结构有什么好处?

// array
$user['name'] = 'Emanuil';

// object
$user->name = 'Emanuil';
Run Code Online (Sandbox Code Playgroud)

php

17
推荐指数
3
解决办法
2万
查看次数

CodeIgniter - 从空值创建默认对象

A PHP Error was encountered

Severity: Warning

Message: Creating default object from empty value

Filename: models/Modeltest.php

Line Number: 13
Run Code Online (Sandbox Code Playgroud)

我试图在模型中创建一个数组并将其返回给控制器,但它是否给出了这个警告?任何人都可以帮我解决问题吗?

我的ModelClass代码

    $list = Array();
    $list[0]->title = "first blog title";
    $list[0]->author = "author 1";

    $list[1]->title = "second blog title";
    $list[1]->author = "author 2";

    return $list;
Run Code Online (Sandbox Code Playgroud)

我的控制器类代码

    $this->load->model("modeltest");
    print_r($this->modeltest->get_articles_list());
Run Code Online (Sandbox Code Playgroud)

php warnings codeigniter notice php-5.4

3
推荐指数
1
解决办法
9450
查看次数

未捕获的错误:无法使用 stdClass 类型的对象作为数组

致命错误:未捕获错误:无法使用 stdClass 类型的对象作为数组

$code = json_decode($src);
echo $code["items"];
Run Code Online (Sandbox Code Playgroud)

var_dump 显示以下内容(截断):

object(stdClass)#7 (3) { ... } 
Run Code Online (Sandbox Code Playgroud)

我不知道它是什么stdClass以及如何使用它。

编辑:

stdClass是一个创建简单对象实例的类。类的属性将使用->而不是[...]符号来访问。

根据 的文档json_decode,简单地将第二个参数设置为true将导致结果是关联数组,它可以像数组一样依次访问。

在发布这个问题时,我没有尝试搜索如何解码 JSON - 因为这非常简单而且我已经开始工作了。我刚刚收到另一个错误(上图),并且没有找到如何解决这个问题的运气。我相信人们也有类似的问题,因为这个问题也得到了一些看法。

php arrays json stdclass

-1
推荐指数
1
解决办法
1万
查看次数