请问new stdclass()是什么作用,一般用在什么场景?
谢谢。
请问new stdclass()是什么作用,一般用在什么场景?
谢谢。
感谢提问,在stackOverFlow找到了答案,下面翻译过来:
1、在返回特定数据类型的时候,使用stdClass,如:
<code>$person -> name = "John" -> surname = "Miller" -> address = "123 Fake St"</code>
2、在返回同类型数据的列表时使用Array,如:
<code> "John Miller" "Peter Miller" "Josh Swanson" "Harry Miller"</code>
3、在返回特定类型的列表时,stdClass、array并用,如:
<code> $person[0] -> name = "John" -> surname = "Miller" -> address = "123 Fake St" $person[1] -> name = "Peter" -> surname = "Miller" -> address = "345 High St"</code>
个人认为:在不同的用途下使用array或stdClass,或两者结合,更加便捷。
我常用在保存数据 主要是开销比较小
<code class="php">$obj = new stdClass; $obj->test = 'abc'; $obj->other = 6.2; $obj->arr = array (1, 2, 3);</code>
比数组更便捷
测试
<code class="php">$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); }</code>
结果
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,每个字段就成了属性