PHP 对象数组 (shorthand)

PHP array of objects (shorthand)

我知道这是在 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'}];

通用,未命名,无 class 个对象.....

然后像这样访问它:

userArray[0].name 

在 PHP 中是否有 quick/shorthand 方法来做同样的事情?

或者需要定义对象名并实例化..等

像这样:$obj1 = new stdClass;

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

你可以声明你的数组,然后简单地cast它到一个对象,例如

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

哪个会给你这个:

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

)

您可以将 class 的变量声明为 public

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;