【问题标题】:Accessing an array in an object访问对象中的数组
【发布时间】:2013-01-23 12:36:43
【问题描述】:

如果我知道要搜索的正确术语,很容易用谷歌搜索,但我不确定术语。

我有一个返回大对象的 API。我通过以下方式访问一个特定的:

$bug->fields->customfield_10205[0]->name;
//result is johndoe@gmail.com

有许多值,我可以通过将其从 0 更改为 1 等来访问它们

但我想遍历数组(也许这不是正确的术语)并获取其中的所有电子邮件并将其添加到这样的字符串中:

implode(',', $array);
//This is private code so not worried too much about escaping

会以为我只是做类似的事情: echo implode(',', $bug->fields->customfield_10205->name);

也试过了 echo implode(',', $bug->fields->customfield_10205);

并且 echo implode(',', $bug->fields->customfield_10205[]->name);

我正在寻找的输出是: 'johndoe@gmail.com,marydoe@gmail.com,patdoe@gmail.com'

我哪里错了,我提前为这个愚蠢的问题道歉,这可能是新手

【问题讨论】:

  • 这是一个 SimpleXML 对象吗?是否有可能var_dump()$bug->fields->customfield_10205 的值?
  • 你会得到什么输出呢?如果这是 SimpleXML,则这些不是真正数组,因此您可以使用[]foreach 访问它们,但不能使用数组函数。

标签: php arrays object


【解决方案1】:

你需要一个迭代,比如

# an array to store all the name attribute
$names = array();

foreach ($bug->fields->customfield_10205 as $idx=>$obj)
{
  $names[] = $obj->name;
}

# then format it to whatever format your like
$str_names = implode(',', $names);

PS:您应该寻找属性电子邮件而不是名称,但是,我只是按照您的代码进行

【讨论】:

    【解决方案2】:

    使用此代码,并循环遍历数组。

    $arr = array();
    for($i = 0; $i < count($bug->fields->customfield_10205); $i++)
    {
        $arr[] = $bug->fields->customfield_10205[$i]->name;
    }
    $arr = implode(','$arr);
    

    【讨论】:

      【解决方案3】:

      如果不使用额外的循环和临时列表,这在 PHP 中是不可能的:

      $names = array();
      foreach($bug->fields->customfield_10205 as $v)
      {
          $names[] = $v->name;
      }
      implode(',', $names);
      

      【讨论】:

        【解决方案4】:

        你可以像这样使用array_map函数

        function map($item)
        {
            return $item->fields->customfield_10205[0]->name;
        }
        
        implode(',', array_map("map", $bugs)); // the $bugs is the original array 
        

        【讨论】:

          猜你喜欢
          • 2023-03-30
          • 1970-01-01
          • 1970-01-01
          • 2017-08-13
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多