【问题标题】:PHP array of objects (shorthand) [duplicate]PHP对象数组(速记)[重复]
【发布时间】:2015-07-21 22:22:46
【问题描述】:

我知道这是在 PHP 中创建对象数组的(其中一种)正确方法:

$obj1 = new stdClass;
$obj1->title = "Title 1";
$obj1->author = "Author 1";
$obj1->publisher = "Publisher Name 1";

$obj2 = new stdClass;
$obj2->title = "Title 2";
$obj2->author = "Author 2";
$obj2->publisher = "Publisher Name 2";

$obj3 = new stdClass;
$obj3->title = "Title 3";
$obj3->author = "Author 3";
$obj3->publisher = "Publisher Name 3";

$newArray = array($obj1, $obj2, $obj3);
echo ($newArray[0]->title);

但在其他一些语言(JS、ActionScript..etc)中,您可以像这样在数组声明中快速创建对象:

var userArray = [{name:'name 1', age:'10'}, {name:'name 2', age:'11'}, {name:'name 3', age:'12'}];

通用,未命名,无类对象.....

然后像这样访问它:

userArray[0].name 

在 PHP 中是否有快速/简写的方法来做同样的事情?

或者你需要定义一个对象名称并实例化它..etc

像这样:$obj1 = new stdClass;

然后转移到分配每个属性,然后在单独的步骤中添加到数组中?

【问题讨论】:

    标签: php arrays object shorthand


    【解决方案1】:

    您可以声明您的数组,然后简单地将其cast 传递给一个对象,例如

    $arr = [
        (object) [
                   "a" => 1,
                   "b" => 2,
                   "c" => 3,
        ]
    ];
    

    这会给你这个:

    Array
    (
        [0] => stdClass Object
            (
                [a] => 1
                [b] => 2
                [c] => 3
            )
    
    )
    

    【讨论】:

      【解决方案2】:

      你可以声明一个类的变量是公开的

      class Movie {
        public $name = 'Some Title';
        public $description = 'This is a description'
      }
      
      $movie = new Movie;
      echo $movie->name;
      echo $movie->description;
      
      $movie->name = 'Name here';
      $movie->description = 'New Description';
      
      var_dump($movie);
      

      你也可以像这样动态创建对象:

      $movie = (object) array('name'=>'Okay','description'=>'here we go again');
      echo $movie->name;
      echo $movie->description;
      

      或者使用对象数组:

      for($i=1;$i<=5;$i++) {
         $movies[] = (object) array('name'=>'Movie #'.$i, 'description'=>'This is movie number '.$i);
      }
      echo $movies[1]->name;
      echo $movies[1]->description;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-03-11
        • 2013-09-08
        • 2011-08-19
        • 2013-04-08
        • 1970-01-01
        • 2020-07-15
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多