どちらの場合も、クラス(stdClassまたはArray)のインスタンスを作成し、データを設定する必要があります。2番目のケースでは、新しい操作であるキャストを追加します。したがって、stdClassインスタンスの作成と、配列からstdClassへのデータの解析操作が暗黙的に存在します。
最初のケースでは、クラスのインスタンスのみを作成し、2番目のケースでは両方を作成しますが、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 ?>
stdClass:10.045720100403 | 型キャスト:10.009358882904
stdClass:9.9519069194794 | 型キャスト:9.2100629806519
stdClass:9.2515120506287 | 型キャスト:9.480808019638
stdClass:9.5376181602478 | 型キャスト:9.2310011386871
stdClass:9.9628109931946 | 型キャスト:10.414475917816
テストは決定的なものではありません。この場合、消費されたメモリは、どちらを使用するかを選択するのに役立ちます。