访问对象中的数组

时间:2013-01-23 12:36:44

标签: php arrays object

如果我知道搜索这些条目的正确条款很容易谷歌,但我不确定术语。

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

答案 0 :(得分: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:您应该查找属性电子邮件而不是名称,但是,我只是按照您的代码

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

您可以使用array_map这样的功能

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

implode(',', array_map("map", $bugs)); // the $bugs is the original array