将PHP stdClass对象构建为关联数组

时间:2017-10-18 18:56:51

标签: php object stdclass

除了

之外,还可以使用其他方法构建类似于关联数组的stdClass对象而不使用循环
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-api</artifactId>
        <version>5.0.1</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-engine</artifactId>
        <version>5.0.1</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.junit.platform</groupId>
        <artifactId>junit-platform-launcher</artifactId>
        <version>1.0.1</version>
        <scope>test</scope>
    </dependency>

类似于如何在Javascript中创建对象

$obj = (object)[ 'item1' => 1 , 'item2'=> 2 ];

提前谢谢。

1 个答案:

答案 0 :(得分:1)

据Anthony手册:

  

在PHP 7中,有几种方法可以创建一个空对象:

const map = new Map();
map.set("RESULT", {name:"Bob"});
map.set("PROVICE", {name:"BC"});
map.set("CITY", {name:"Nanaimo"});

let entries = Array.from(map.entries(), ([prop]) => prop);

console.log(entries);

let prop = "CITY";

console.log(
  map.get(entries[entries.indexOf(prop)])
); // `{"name": "Nanaimo"}`

有关他必须说的内容的更多信息,请访问PHP Manual documentation并提供答案。

为了扩展他的答案,第一个看起来像这样:

第一个例子

<?php
$obj1 = new \stdClass; // Instantiate stdClass object
$obj2 = new class{}; // Instantiate anonymous class
$obj3 = (object)[]; // Cast empty array to object

var_dump($obj1); // object(stdClass)#1 (0) {}
var_dump($obj2); // object(class@anonymous)#2 (0) {}
var_dump($obj3); // object(stdClass)#3 (0) {}
?>

第二个例子

$obj1 = new \stdClass;
$obj1->first = 1;

print_r($obj1);

// output
// stdClass Object
// (
//     [first] => 1
// )

第三个例子

$obj2 = new class{ };
$obj2->second = 2;

print_r($obj2);

// output
// class@anonymous Object
// (
//     [second] => 2
// )

你可以沿着这些方向做点什么;它就像那样容易