返回顶部

[文摘] PHP中stdClass与array性能对比及在什么情况使用

[复制链接]
awagink 显示全部楼层 发表于 2016-2-1 18:29:29 |阅读模式 打印 上一主题 下一主题
PHP 编程中,如果一个函数要返回多个值,可以以对象 stdClass 的方式,也可以以数组 array 的方式返回数据。那么我们应该什么时候用 stdClass,什么时候用 array 呢?还是都用 array ?
这位开发者的说法是:
当返回有固定结构的数据时,使用对象:

$person
    -> name = "John"
    -> surname = "Miller"
    -> address = "123 Fake St"

当返回列表时使用数组:

"John Miller"
"Peter Miller"
"Josh Swanson"
"Harry Miller"

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

$person[0]
    -> name = "John"
    -> surname = "Miller"
    -> address = "123 Fake St"
$person[1]
    -> name = "Peter"
    -> surname = "Miller"
    -> address = "345 High St"
对象不适合保存一组数据,因为总是需要根据属性名去获取属性值,数组可以保存一组数据,也可以保存有固定结构的数据。但是具体使用哪种就看开发者的风格和喜好了。
该开发者给出了一个建议或者说是一般做法,但是并没有给出一个强制的结论。
另外需要注意的是,array 效率比 stdClass 高,请看如下代码:


$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;

最终输出结果是:

可以看到,array 比 stdClass 确实要快一些。好吧,这点时间其实可以忽略不计啦~
我的结论?结论就是:你喜好用 stdClass 就用 stdClass,你喜好用 array 就用 array 咯,但是同一个项目里最好保持一致,不要有的函数返回对象,而有的函数又返回数组。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

纳速健身网成立于2006年8月,是国内优秀健身运动网站,现拥浏览人数超30万。网站是集养生、武术、太极拳和健身气功等多种健身项目于一体的多功能交流平台。平台提供大量优质的教学视频、伴奏音乐(太极拳晨练音乐,广场舞音乐,健身气功音乐)、图文教程、运动科普和经验分享,为健身爱好者提供完善的运动指导平台。
  • 纳速QQ群乙:151815303
  • 纳速QQ群丙:79104490
  • 微信交流群:微信好友搜索【nasuwang】加小纳微信进群交流健身知识,备注【纳速】
  •                     或者扫描页面底部右侧二维码添加小纳微信>>>
  • 微信公众号

  • 微信群客服交流

  • Copyright © 2006-2021, 纳速健身网. | | 辽ICP备13002388号-1 辽公安网备21050202000005号公安网备号 纳速武术-乙 QQ