2015-09-22 2 views
0

Я пытаюсь получить кандидатов в зависимости от того, в какой отрасли они работают. Мой запрос возвращает эти данные, когда я отправляю запрос для кандидатов в отрасли, где есть только один (это в формате 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; 

} 

точная ошибка, я получаю, что я «не может использовать объект типа StdClass как массив», но почему это Ошибка? Я отлично справляюсь с другими запросами. Для того, чтобы объяснить вещи немного дальше какой-то код, вот что $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 кода, так что я могу представить его в виде таблицы.

ответ

1

Вы могли бы действовать следующим образом - 1. Сначала проверьте, если это массив, то делать как обычно 2. Else создать массив и нажмите тогда делать, как обычно

$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 
     } 
+0

я в конечном итоге реализации решения в основном идентичный этому, спасибо. – Rasmus

1

Это должно работать:

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

Это говорит вам «не может использовать объект типа StdClass как массив», потому что вы пытаетесь сделать это; доступ к объекту, как к массиву. Возможно, ваш сервер возвращает другую структуру данных на основе конкретного запроса, который вы отправляете.

Смежные вопросы