Home > Backend Development > PHP Tutorial > php中new stdclass()用在什么场景

php中new stdclass()用在什么场景

WBOY
Release: 2016-06-06 20:09:56
Original
1162 people have browsed it

请问new stdclass()是什么作用,一般用在什么场景?
谢谢。

回复内容:

请问new stdclass()是什么作用,一般用在什么场景?
谢谢。

感谢提问,在stackOverFlow找到了答案,下面翻译过来:
1、在返回特定数据类型的时候,使用stdClass,如:

<code>$person
   -> name = "John"
   -> surname = "Miller"
   -> address = "123 Fake St"</code>
Copy after login

2、在返回同类型数据的列表时使用Array,如:

<code>  "John Miller"
  "Peter Miller"
  "Josh Swanson"
  "Harry Miller"</code>
Copy after login

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>
Copy after login

个人认为:在不同的用途下使用array或stdClass,或两者结合,更加便捷。

我常用在保存数据 主要是开销比较小

<code class="php">$obj = new stdClass;
$obj->test = 'abc';
$obj->other = 6.2;
$obj->arr = array (1, 2, 3);</code>
Copy after login

比数组更便捷

测试

<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>
Copy after login

结果

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,每个字段就成了属性

Related labels:
php
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template