ホームページ > バックエンド開発 > PHPチュートリアル > PHP 配列をオブジェクトに変換するためのいくつかのメソッド

PHP 配列をオブジェクトに変換するためのいくつかのメソッド

WBOY
リリース: 2016-06-20 13:04:43
オリジナル
1024 人が閲覧しました

今日、製品の作業中に偶然コード行を見つけました。

$c= new$class_name;
                                                        
$object_os= newstdClass;
                                                        
$c->on_init_app_router($object_os);
ログイン後にコピー

非常に混乱したので、クラス $c を調べたところ、空のクラス stdClass のインスタンス $object_os にいくつかの属性が動的に追加されていることがわかりました。

上記の 3 行のコードから、stdClass で何ができるのかが大まかにわかります。

stdClass はプロダクトコードで何度か登場しましたが、使ったことはなかったので、関連情報を確認し、私の経験を以下にまとめました。

stdClass は PHP の基本クラスであり、ほとんどすべてのクラスがこのクラスを継承するため、いつでも新しいクラスになり、この変数はオブジェクトになる可能性があります。同時に、この基本クラスにはメソッドが存在しないという特別な機能があります。

stdClass は PHP5 で徐々に普及してきています。これは、PHP5 オブジェクトがどこで呼び出されても参照アドレス型であるため、消費されるリソースが比較的少ないためです。他のページで値を割り当てると、コピーを参照するのではなく、値が直接変更されます。

例:

$user= newstdClass();
$user->name = ‘gouki’;
$myUser= $user;
$myUser->name = ‘flypig’;
ログイン後にコピー

PHP4 の時代であれば、そのようなコードはシステム リソースを消費するでしょう。理由:

$myUser= $user;
ログイン後にコピー

これによりコピーが作成されます。したがって、PHP4 では次のように使用されます:

$myUser= & $user;
ログイン後にコピー

この記事の冒頭の 3 行のコードから、stdClass を使用してオブジェクト型の要素を生成できることがわかります。次に、stdClass を使用して配列をオブジェクト クラスに変換し、そのためのいくつかのメソッドを紹介します。配列オブジェクトを相互に変換します。:

1. stdClass 配列をオブジェクトに変換します

$arr= array();                                            
$arr['a'] = 1;                                               
$arr['b'] = 2;                                               
$arr['c'] = 3;                                             
                   
$object= newstdClass;
foreach($arras$key=> $value) {
    $object->$key= $value;
}
                   
var_dump($object);
ログイン後にコピー

結果の出力は次のとおりです:

object(stdClass)#1 (3) {
  ["a"]=>
  int(1)
  ["b"]=>
  int(2)
  ["c"]=>
  int(3)
}
ログイン後にコピー

2. オブジェクトを配列に変換します

functionobject_to_array($obj) 
{ 
    $_arr= is_object($obj) ? get_object_vars($obj) : $obj; 
    foreach($_arras$key=> $val) 
    { 
        $val= (is_array($val) || is_object($val)) ?       object_to_array($val) : $val; 
        $arr[$key] = $val; 
    } 
    return$arr; 
}
ログイン後にコピー

3. ArrayObject メソッド配列からオブジェクトへ

$arr= array('key1'=>'test1', 'key2'=> 'test2');
           
var_dump(newArrayObject($arr));
ログイン後にコピー

結果の出力は次のとおりです:

object(ArrayObject)#1 (1) {
  ["storage":"ArrayObject":private]=>
  array(2) {
    ["key1"]=>
    string(5) "test1"
    ["key2"]=>
    string(5) "test2"
  }
}
ログイン後にコピー

もちろん、PHP のパワーと柔軟性を考慮すると、配列やオブジェクトを変換する方法は他にもたくさんあるはずです。


関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート