Heim > Backend-Entwicklung > PHP-Tutorial > php中new stdclass()用在什么场景

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

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Freigeben: 2016-06-06 20:09:56
Original
1212 Leute haben es durchsucht

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

回复内容:

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

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

<code>$person
   -> name = "John"
   -> surname = "Miller"
   -> address = "123 Fake St"</code>
Nach dem Login kopieren

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

<code>  "John Miller"
  "Peter Miller"
  "Josh Swanson"
  "Harry Miller"</code>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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

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

$obj = new stdClass;
$obj->test = 'abc';
$obj->other = 6.2;
$obj->arr = array (1, 2, 3);
Nach dem Login kopieren

比数组更便捷

测试

$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);
}
Nach dem Login kopieren

结果

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

Verwandte Etiketten:
php
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage