在这两种情况下,您都需要创建一个类(stdClass 或 Array)的实例并设置数据。在第二种情况下,您添加了一个新操作,即强制转换,因此隐含了 stdClass 实例的创建以及从 Array 到 stdClass 的解析数据操作。
在第一种情况下,您只创建一个类的实例,在第二种情况下,两者都创建,但 1 对程序员是不可见的。我认为第一个在内存和速度上效率更高
1 <?php
2
3 $time_start = microtime(true);
4
5 for($i=0 ; $i<1000000; $i++)
6 {
7 $profile = new stdClass;$
8 $profile->first_name = 'Woppi';
9 $profile->last_name = 'Jillenjack';
10 $profile->email = 'woppi.jillenjack@gmail.com';
11 $time_end = microtime(true);$
12 }
13
14 $object = $time_end - $time_start;
15
16
17 $time_start = microtime(true);
18 for($i=0;$i<1000000;$i++)
19 {
20 $profile = array('first_name'=>'Woppi',
21 'last_name'=>'Jillenjack',
22 'email'=>'woppi.jillenjack@gmail.com');
23 $profile = (object)$profile;
24 $time_end = microtime(true);
25 }
26 $array_to_object = $time_end - $time_start;
27
28 echo "stdClass: $object | Typecasting: $array_to_object";
29
30 ?>
标准类:10.045720100403 | 类型转换:10.009358882904
标准类:9.9519069194794 | 类型转换:9.2100629806519
标准类:9.2515120506287 | 类型转换:9.480808019638
标准类:9.5376181602478 | 类型转换:9.2310011386871
标准类:9.9628109931946 | 类型转换:10.414475917816
测试不是决定性的,在这种情况下,消耗的内存可能会帮助我们选择使用一种或另一种