从两个stdObject数组获取内容

时间:2013-07-24 19:09:17

标签: php arrays object stdclass

[responseheader] => Object (
    Array ( 
        [0] =>  Object ( 
            [id] => id_1 
            [name] => abc 
        )
        [1] => Object ( 
            [id] => id_2 
            [name] => xyz 
        ) 
    ) 
) 
[response] => Object ( 
    [id_1] => Object ( 
        [content] => Array ( 
            [0] => content_1 
            ) 
        ) 
    [id_2] => Object ( 
        [content] => Array ( 
            [0] => content_2
        )
    )
)

以上两个对象responseheaderresponse都在一个对象(header)下。

在上述结构中,response的顺序与responseheader中的顺序相同。(即,id_2将始终位于id_1之后)

我希望contentresponse来自id中的每个responseheader。我将迭代responseheader对象。

我可以遍历response并逐步在存储dummy的{​​{1}}内添加另一个属性(比如responseheader),但有更好,更快的方法吗?

1 个答案:

答案 0 :(得分:1)

这应该可以解决问题。

$result = array();
//loop through responseheader array
foreach($data['responseheader'] as $row)
{
    //if the id exists in the response array add it to the result array
    if(array_key_exists($row['id'], $data['response'])) {
        $result[] = $data['response'][$row['id']]['content'][0];
    }
}
print_r($result);

如果响应中的内容可能包含多个内容,则必须将其循环到:

foreach($data['response'][$row['id']]['content'] as $content) {
    $result[] = $content;
}