php 什么时候用到class,在 PHP 中,什么时候用 stdClass,什么时候用 array

本文讨论了PHP编程中函数返回值的两种常见方式——对象 stdClass 和数组 array。作者建议在返回固定结构数据时用对象,列表则用数组,而复杂数据结构时可能采用对象组成的数组。效率上,array 比 stdClass 更高效。结论是,开发者可根据个人喜好和项目一致性选择,但保持一致性为佳。
摘要由CSDN通过智能技术生成

PHP 编程中,如果一个函数要返回多个值,可以以对象 stdClass 的方式,也可以以数组 array 的方式返回数据。那么我们应该什么时候用 stdClass,什么时候用 array 呢?还是都用 array ?

这位开发者的说法是:

当返回有固定结构的数据时,使用对象:

Default

$person

-> name = "John"

-> surname = "Miller"

-> address = "123 Fake St"

1

2

3

4

$person

->name="John"

->surname="Miller"

->address="123 Fake St"

当返回列表时使用数组:

Default

"John Miller"

"Peter Miller"

"Josh Swanson"

"Harry Miller"

1

2

3

4

"John Miller"

"Peter Miller"

"Josh Swanson"

"Harry Miller"

当返回一组有固定结构的数据时使用对象组成的数组:

Default

$person[0]

-> name = "John"

-> surname = "Miller"

-> address = "123 Fake St"

$person[1]

-> name = "Peter"

-> surname = "Miller"

-> address = "345 High St"

1

2

3

4

5

6

7

8

9

$person[0]

->name="John"

->surname="Miller"

->address="123 Fake St"

$person[1]

->name="Peter"

->surname="Miller"

->address="345 High St"

对象不适合保存一组数据,因为总是需要根据属性名去获取属性值,数组可以保存一组数据,也可以保存有固定结构的数据。但是具体使用哪种就看开发者的风格和喜好了。

该开发者给出了一个建议或者说是一般做法,但是并没有给出一个强制的结论。

另外需要注意的是,array 效率比 stdClass 高,请看如下代码:

Default

$t = microtime(true);

for ($i = 0; $i < 1000; $i++) {

$z = array();

for ($j = 0; $j < 10000; $j++) {

$z['a'] = 'a';

$z['b'] = 'b';

$z['c'] = $z['a'] . $z['b'];

}

}

echo microtime(true) - $t, PHP_EOL;

$t = microtime(true);

for ($i = 0; $i < 1000; $i++) {

$z = new stdclass();

for ($j = 0; $j < 10000; $j++) {

$z->a = 'a';

$z->b = 'b';

$z->c = $z->a . $z->b;

}

}

echo microtime(true) - $t, PHP_EOL;

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

$t=microtime(true);

for($i=0;$i<1000;$i++){

$z=array();

for($j=0;$j<10000;$j++){

$z['a']='a';

$z['b']='b';

$z['c']=$z['a'].$z['b'];

}

}

echomicrotime(true)-$t,PHP_EOL;

$t=microtime(true);

for($i=0;$i<1000;$i++){

$z=newstdclass();

for($j=0;$j<10000;$j++){

$z->a='a';

$z->b='b';

$z->c=$z->a.$z->b;

}

}

echomicrotime(true)-$t,PHP_EOL;

最终输出结果是:

17bf57b1f55cc5ea81168a4a3a404825.png

可以看到,array 比 stdClass 确实要快一些。好吧,这点时间其实可以忽略不计啦~

我的结论?结论就是:你喜好用 stdClass 就用 stdClass,你喜好用 array 就用 array 咯,但是同一个项目里最好保持一致,不要有的函数返回对象,而有的函数又返回数组。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值