【问题标题】:PHP StdClass - access fields as ->field or ->{'field'}PHP StdClass - 访问字段为 ->field 或 ->{'field'}
【发布时间】:2011-08-07 16:42:57
【问题描述】:

我正在处理这个 PHP 代码协作,似乎有些人访问这样的 PHP StdClass 字段

$body->head

和其他喜欢的人

$body->{'head'}

据我所知,这些是等价的。他们是吗?使用哪个重要吗?你更喜欢哪种方式?这里有什么要注意的怪癖吗?

【问题讨论】:

    标签: php field stdclass


    【解决方案1】:

    它们是等价的。如果您想使用可恶的属性名称,您只需要第二个版本:

    $data->{'what * the ! thing'}
    

    如果将纯数据数组转换为对象,有时会发生这种情况。

    但也有双引号的版本,当你实际需要变量属性名称(基本上是对象的变量变量)时,它更有意义:

    $data->{"attr$index"}
    

    【讨论】:

    • 是的。尽可能避免$body->{'head'}
    【解决方案2】:

    我需要创建具有异常属性名称的类,例如 {'field-name'}。

    class myclass
    {
        public {'field-name-with-minus-sign'} = "something";
    }
    

    身份证不起作用。为什么?我不想使用这样的东西:

    $myclass = new stdClass();
    $myclass->{'dumb-property-name'}
    

    因为我有很多这样的属性。

    【讨论】:

      猜你喜欢
      • 2020-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-08
      • 1970-01-01
      • 2021-08-06
      • 1970-01-01
      相关资源
      最近更新 更多