【问题标题】:how to turn array key into property so I can access it as property如何将数组键转换为属性,以便我可以将其作为属性访问
【发布时间】:2017-09-04 22:37:40
【问题描述】:

我有一组设置,我想像这样访问它:

$settings->type

而不是:

$settings['type']

刀片内部。我更喜欢第一个版本,因为它更优雅。

这是我的数组:

array:5 [▼
  "enable" => "true"
  "type" => "native"
  "must_be_registered" => "true"
  "allow_nested" => "true"
  "nested_level" => "5"
]

我试着把它变成收藏

Collection {#382 ▼
  #items: array:5 [▼
    "enable" => "true"
    "type" => "native"
    "must_be_registered" => "true"
    "allow_nested" => "true"
    "nested_level" => "5"
  ]
}

但这并没有真正帮助,我仍然无法在刀片中执行$settings->type,有人知道我该怎么做吗?

Property [type] does not exist on this collection instance.

【问题讨论】:

  • 尝试投射到object?
  • 我不知道怎么做,有那个功能吗?
  • 实际上快速的谷歌搜索有帮助,非常感谢! :)
  • json_encode对象,然后json_decode它...

标签: php arrays laravel object


【解决方案1】:

试试这个解决方法:

$array=[
  "enable" => "true",
  "type" => "native",
  "must_be_registered" => "true",
  "allow_nested" => "true",
  "nested_level" => "5"
];

$settings=json_decode(json_encode($array));

echo $settings->type;

或者

$settings=(Object)$array;

echo $settings->type;

【讨论】:

    【解决方案2】:

    你可以像这样使用(对象)数组,

    <?php
    
    $array=[
      "enable" => "true",
      "type" => "native",
      "must_be_registered" => "true",
      "allow_nested" => "true",
      "nested_level" => "5"
    ];
    
    $settings=(object)$array;
    
    echo $settings->type;
    

    demo here.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-05
      • 1970-01-01
      • 2011-01-02
      相关资源
      最近更新 更多