如果请求返回多个对象,则代码有效,如果请求仅返回一个对象

时间:2015-09-22 07:22:11

标签: php json

我试图根据他们所从事的行业来取得候选人。当我在一个只有一个行业的候选人中发送候选人请求时,我的请求会返回这些数据(它在JSON):

 stdClass Object ([Candidates] => stdClass Object ([row] =>
 stdClass Object ([no] => 1 [FL] => Array ( 
    [0] => stdClass Object ( [content] => 213748000001275022 [val] => RESUMEID ) 
    [1] => stdClass Object ( [content] => John (3) [val] => Modified by ) 
    [2] => stdClass Object ( [content] => 11 Aug-2015 [val] => Modified time ) 
    [3] => stdClass Object ( [content] => 3308 [val] => Candidate ID ) 
    [4] => stdClass Object ( [content] => John (3) [val] => Recruiter ) 
    [5] => stdClass Object ( [content] => Creative arts [val] => Branche / Industry ) 
    [6] => stdClass Object ( [content] => Ja / Yes [val] => Accept af optagelse i Kandidatbank / Accept my registration in
 candidatedatabase )))))

我使用此代码:

$rowArray = $data->response->result->Candidates->row;

for ($i = 0; $i < count($rowArray); $i++) {            

      $FL = $data->response->result->Candidates->row[$i]->FL;

}

我得到的确切错误是我&#34;不能使用stdClass类型的对象作为数组&#34;,但为什么现在这个错误?我在其他请求上工作得很好。要使用某些代码进一步解释一下,这里有$FL用于:

if (array_key_exists(4, $FL) === true && $FL[4]->val === 'Branche / Industry') {
      $industry = $FL[4]->content;
} else if (array_key_exists(5, $FL) === true && $FL[5]->val === 'Branche / Industry') {
      $industry = $FL[5]->content;
} else {
      $industry = $notSpecified;
}

它在我的PHP代码中设置候选变量,因此我可以将它呈现在表中。

2 个答案:

答案 0 :(得分:1)

这应该有效:

$FL = $data->response->result->Candidates->row->FL[$i];

它告诉你“不能使用stdClass类型的对象作为数组”,因为你正试图这样做;像访问数组一样访问对象。也许您的服务器根据您发送的特定请求返回不同的数据结构。

答案 1 :(得分:1)

您可以按以下步骤操作 -  1.首先检查它是否是一个数组,然后像往常一样  2.否则创建一个数组并推送它然后照常执行

$rowArray = $data->response->result->Candidates->row;
        if(!is_array($rowArray))
        {
        $rowArray=array($data->response->result->Candidates->row);
        //so that $rowArray is now an array and count gives 1
        }