Initialize Objects like arrays in PHP?

后端 未结 8 1505
情话喂你
情话喂你 2021-01-01 09:04

In PHP, you can initialize arrays with values quickly using the following notation:

$array = array(\"name\" => \"member 1\", array(\"name\" => \"member         


        
8条回答
  •  忘掉有多难
    2021-01-01 09:44

    I also up-voted Gumbo as the preferred solution but what he suggested is not exactly what was asked, which may lead to some confusion as to why member1o looks more like a member1a.

    To ensure this is clear now, the two ways (now 3 ways since 5.4) to produce the same stdClass in php.

    1. As per the question's long or manual approach:

      $object = new stdClass;
      $object->member1 = "hello, I'm 1";
      $object->member1o = new stdClass;
      $object->member1o->member1 = "hello, I'm 1o.1";
      $object->member2 = "hello, I'm 2";
      
    2. The shorter or single line version (expanded here for clarity) to cast an object from an array, ala Gumbo's suggestion.

      $object = (object)array(
           'member1' => "hello, I'm 1",
           'member1o' => (object)array(
               'member1' => "hello, I'm 1o.1",
           ),
           'member2' => "hello, I'm 2",
      );
      
    3. PHP 5.4+ Shortened array declaration style

      $object = (object)[
           'member1' => "hello, I'm 1",
           'member1o' => (object)['member1' => "hello, I'm 1o.1"],
           'member2' => "hello, I'm 2",
      ];
      

    Will both produce exactly the same result:

    stdClass Object
    (
        [member1] => hello, I'm 1
        [member1o] => stdClass Object
            (
                [member1] => hello, I'm 1o.1
            )
    
        [member2] => hello, I'm 2
    )
    

    nJoy!

提交回复
热议问题