Stackoverflow的解释:translate过来就是在返回特定数据类型的时候,使用stdClass
在不同的环境下,而在也可以与array同时使用
$goods = new \stdClass();
$goods->name = $order->course->name;$goods->description = $order->course->description;
在保存数据的时候使用,开销比较小
$size = 200000;
mark();
$sc = new stdClass;
foreach(range(1,5) as $i){
$sc->$i = pow($i,2);
}
mark();
dump('sc',1);
mark();
foreach(range(1,$size) as $i){
$scn = "sc" . $i;
// $$scn = $sc;
$arr_sc[] = $sc;
}
mark();
dump('sc');
mark();
$arr =[];
foreach(range(1,5 ) as $i){
$arr[] = pow($i,2);
}
mark();
dump('arr',1);
mark();
foreach(range(1,$size) as $i){
$arrn = "arr" . $i;
// $$arrn = $arr;
$arr_arr[] = $arr;
}
mark();
dump('arr');
function dump($var,$size = 200000){
global $mem_size,$times,$$var;
// xdebug_debug_zval($var);
echo "Total:" .round(($mem_size[count($mem_size)-1]-$mem_size[count($mem_size)-2])/pow(1024,2),3) . "Mb "
. "Avg:". round(($mem_size[count($mem_size)-1]-$mem_size[count($mem_size)-2])/(1024*$size),3) . "Kb "
. "Time:". round(($times[count($times)-1] -$times[count($times)-2]),3) ."\n";
}
function mark($type=0){
global $mem_size,$times;
$mem_size[] = memory_get_usage();
$times[] = microtime(true);
}
Total:0.002Mb Avg:1.773Kb Time:0
Total:18.785Mb Avg:0.096Kb Time:0.101
Total:0.001Mb Avg:1.227Kb Time:0
Total:18.785Mb Avg:0.096Kb Time:0.1
orm中要用,把查询的每一条纪录转换成一个class,每个字段就成了属性