【问题标题】:php create object without class [duplicate]php创建没有类的对象[重复]
【发布时间】:2013-01-01 23:15:26
【问题描述】:

在 JavaScript 中,您可以通过以下方式轻松创建没有类的对象:

 myObj = {};
 myObj.abc = "aaaa";

对于 PHP,我找到了这个,但它已经有将近 4 年的历史了: http://www.subclosure.com/php-creating-anonymous-objects-on-the-fly.html

$obj = (object) array('foo' => 'bar', 'property' => 'value');

现在 PHP 5.4 在 2013 年推出,有没有替代方案?

【问题讨论】:

  • $obj = (object)[]; $obj->someProp = "嘿男孩";
  • PHP 的嵌套关联数组可能是嵌套 JS 对象的良好替代品,具体取决于您要执行的操作。

标签: php


【解决方案1】:

您始终可以使用new stdClass()。示例代码:

   $object = new stdClass();
   $object->property = 'Here we go';

   var_dump($object);
   /*
   outputs:

   object(stdClass)#2 (1) {
      ["property"]=>
      string(10) "Here we go"
    }
   */

从 PHP 5.4 开始,您可以通过以下方式获得相同的输出:

$object = (object) ['property' => 'Here we go'];

【讨论】:

  • +1 用于 PHP 5.4 方法,这使得代码更短,更易读,尤其是当您有多个项目要添加到对象时。
  • 如果您正在考虑将嵌套数组转换为对象,我建议您使用json_decode(json_encode($array)),它将整个数组转换为嵌套的 stdClass 对象。如果您使用(object) $array,它只会将第一层转换为对象,嵌套在其中的所有内容都将保留为数组。
  • 另一种方式,使用单个 json_decode,传递一个 JSON 字符串: $object = json_decode('{"property": {"foo": "bar"}, "hello": "world" }');
  • @DavidRouten 这非常有帮助。谢谢。
  • @DavidRouten 似乎 PHP7.4(甚至更早?)现在在使用 (object) $array 时也会创建嵌套对象。
猜你喜欢
  • 2016-07-03
  • 2011-10-22
  • 1970-01-01
  • 2011-09-14
  • 2017-05-20
  • 2018-12-22
  • 1970-01-01
  • 2013-12-21
相关资源
最近更新 更多