当前位置: 首页 > 面试题库 >

如何使用带连字符的名称访问此对象属性?

穆丁雨
2023-03-14
问题内容

我正在使用有人编写的PHP类来与BaseCamp API交互。

我正在执行的特定呼叫是在待办事项列表中检索项目,效果很好。

我的问题是,我不确定如何仅访问todo-items返回的对象的属性。这是返回对象的var_dump:

object(stdClass)[6]
  public 'completed-count' => string '0' (length=1)
  public 'description' => string 'Description String' (length=89)
  public 'id' => string '12345' (length=7)
  public 'milestone-id' => string '' (length=0)
  public 'name' => string 'Error Reports' (length=13)
  public 'position' => string '1' (length=1)
  public 'private' => string 'false' (length=5)
  public 'project-id' => string '58904' (length=7)
  public 'tracked' => string 'false' (length=5)
  public 'uncompleted-count' => string '1' (length=1)
  public 'todo-items' => 
    object(stdClass)[3]
      public 'todo-item' => 
        object(stdClass)[5]
          public 'completed' => string 'false' (length=5)
          public 'content' => string 'content string here' (length=133)
          public 'created-on' => string '2009-04-16T20:33:31Z' (length=20)
          public 'creator-id' => string '23423' (length=7)
          public 'id' => string '234' (length=8)
          public 'position' => string '1' (length=1)
          public 'responsible-party-id' => string '2844499' (length=7)
          public 'responsible-party-type' => string 'Person' (length=6)
          public 'todo-list-id' => string '234234' (length=7)
  public 'complete' => string 'false' (length=5)

如何访问todo-items此对象的一部分?


问题答案:
<?php
$x = new StdClass();
$x->{'todo-list'} = 'fred';
var_dump($x);

因此,$ object-> {‘todo-list’}是子对象。如果可以这样设置,那么您也可以以相同的方式阅读它。

如果您想将其转换为数组,可以更轻松一些(即,显而易见的$ ret [‘todo-
list’]访问),则该代码几乎逐字地从Zend_Config中获取,并将为您转换。

public function toArray()
{
    $array = array();
    foreach ($this->_data as $key => $value) {
        if ($value instanceof StdClass) {
            $array[$key] = $value->toArray();
        } else {
            $array[$key] = $value;
        }
    }
    return $array;
}


 类似资料:
  • 问题内容: 我正在使用类似的东西: 这给了我这样的输出: 我想访问键[0]中的字符串值。当我尝试做类似的事情时: 我收到此错误: 解析错误:语法错误,意外的T_DNUMBER 这两个数字/整数似乎有问题。 问题答案: PHP7.2引入了一种行为上的更改,以转换对象和数组类型转换中的数字键,从而解决了这一特殊的不一致问题,并使以下所有示例的行为均符合预期。 少一件值得困惑的事情! 原始答案(适用于7

  • 问题内容: 我正在编写一个与已在使用的Google Analytics(分析)API交互的Angular应用。Google返回的数据以“ ga:”为前缀,例如“ ga:newVisits”示例。 如果我使用表达式{{total.ga:newVisits}},Angular无法解析它。逃避冒号继续的任何尝试均导致错误或完全逃避我的表达。 如何将{{total.ga:newVisits}}传递给Ang

  • 问题内容: 如何给定的属性的值? 问题答案: 有称为和的内置函数 在这种情况下

  • 问题内容: 使用此脚本制作所有继承的etc样式的样式对象。 使用以下命令,第一个警报将正常工作,但是第二个警报则无法正常工作..它将解释为我假设的负号。.调试器说“未捕获的参考错误”。但是,我不能在其周围加上引号,因为它不是字符串。那么如何使用此对象属性? 问题答案: 编辑 查看注释,您将看到对于CSS属性,键符号与许多属性不兼容。因此,使用驼峰式案例密钥表示法是当前的方式 使用键符号而不是点 j

  • 问题内容: 如果我有一个如下所示的javascript对象 我有一个既传递对象又传递属性的函数,像这样 身体会是什么样? 问题答案: 您不需要它的功能-只需使用括号符号即可: 这等于点表示法,除了在使用方括号表示法时也可能来自变量,函数返回值等的事实。 如果需要它的功能,则为: 为了回答下面与原始问题没有直接关系的一些注释,可以通过多个括号引用嵌套对象。如果您有这样的嵌套对象: 您可以访问财产的,

  • 问题内容: 如您所见,该回调函数从控制器获取数据。 例如: 在这种情况下,我的第一个警报给了我未定义的内容,第二个/第三个警报弹出窗口显示为: 如何按名称访问值,以便我的第一个警报填写的值是? 问题答案: 代替解析JSON,您可以执行以下操作: 要访问JSON的属性,请执行以下操作: 为什么需要数据,因为数据是一个数组,所以需要对其内容进行检索(第一个元素),它为您提供了一个object 。 并访