2

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

我有一个返回大对象的 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'

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

4

4 回答 4

2

您需要一个迭代,例如

# 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:您应该寻找属性电子邮件而不是名称,但是,我只是按照您的代码

于 2013-01-23T12:42:42.817 回答
0

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

$arr = array();
for($i = 0; $i < count($bug->fields->customfield_10205); $i++)
{
    $arr[] = $bug->fields->customfield_10205[$i]->name;
}
$arr = implode(','$arr);
于 2013-01-23T12:42:04.067 回答
0

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

$names = array();
foreach($bug->fields->customfield_10205 as $v)
{
    $names[] = $v->name;
}
implode(',', $names);
于 2013-01-23T12:42:35.487 回答
0

您可以使用array_map这样的功能

function map($item)
{
    return $item->fields->customfield_10205[0]->name;
}

implode(',', array_map("map", $bugs)); // the $bugs is the original array 
于 2013-01-23T12:48:13.547 回答