很长一段时间以来,我一直在使用数组来存储相关字段。如果我想拥有相关的用户字段,我使用了:
$user = array(
'id' => 27
'name' => 'Pepe'
);
但最近,我一直在处理对象,我更喜欢使用 $user->id 而不是 $user['id']。
我的问题:要实现面向对象的风格,您可以使用 stdClass:
$user = new stdClass();
$user->id = 27;
$user->name = 'Pepe';
或者从一个数组中转换
$user = (object) array(
'id' => 27
, 'name' => 'Pepe'
);
按性能和风格的顺序,其中一个比另一个更好,还是您可以模糊地使用您想要的任何东西?
谢谢!
更新: 我同意所有评论,这根本不是 OOP,只是将相关数据分组到一个结构中。我的 $user 示例不是最好的,因为它是使用具有方法、属性、blablabla 的类的典型示例...我问是因为我有很多配置结构,例如“initTable”,我想要类似的东西:
$table => page => init => 1
=> end => 25
sort => field => name
=> order => asc
等等,我想知道什么是更好的初始化页面:
$table->page->init **OR** $table['page']['init']
最佳答案
基于小型测试 (http://phpfiddle.org/lite/code/cz0-hyf),我可以说使用“new stdClass()”比其他选项慢大约 3 倍。
这很奇怪,但是与 stdClass 相比,转换数组的效率非常高。
但是这个测试只测量执行时间。它不计量内存。
附言我使用 phpFiddle 只是为了共享代码。测试是在我的本地 PC 上完成的。
关于php - 什么是更好的 stdClass 或(对象)数组来存储相关数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18640607/