pyama.fun

Our life is our art.

PHPでArrayをObjectに変換するのは再帰するのが早いのかJSONであれするのが早いのか

同僚のJKの記事を読んで単純に興味が湧いた。

この2つのコードを比較した。

$array = [
    'id'   => 1,
    'name' => 'sample',
    'list' => [
        'id'   => 10,
        'name' => 'test',
    ],
];
$obj = json_decode(json_encode($array));
$array = [
    'id'   => 1,
    'name' => 'sample',
    'list' => [
        'id'   => 10,
        'name' => 'test',
    ],
];
function array_to_object($array) {
  $obj = new stdClass;
  foreach($array as $k => $v) {
     if(strlen($k)) {
        if(is_array($v)) {
           $obj->{$k} = array_to_object($v); //RECURSION
        } else {
           $obj->{$k} = $v;
        }
     }
  }
  return $obj;
} 
$obj = json_decode(json_encode($array));
root@0a3cc7d8d171:/opt/php# time for i in `seq 1000`;do php json.php;done

real    0m35.259s
user    0m14.850s
sys     0m5.630s

root@0a3cc7d8d171:/opt/php# time for i in `seq 1000`;do php rec.php;done

real    0m35.846s
user    0m15.320s
sys     0m5.860s

結論、誤差という感じだから内部的にほとんど同じようなことやってんだろうなって思ったよね。でも僕はなんか本来の用途と異なる使い方をするメソッドの利用は好きくないな。

次へ 投稿

前へ 投稿

© 2019 pyama.fun

テーマの著者 Anders Norén

%d人のブロガーが「いいね」をつけました。