2012-07-13 2 views
-1

PHP로 나는 내가 원하는 결과를 얻기 오전 foreach()foreach는() 경고

Warning: Invalid argument supplied for foreach() in 
/sitename/pages/admin/questions/index.php 

에서 얻고 경고를 억제하는 데 도움이 필요을 억제하는 방법에 대해 설명합니다. 내가 필요로하는 모든

내 코드입니다 ... 경고를 제거하는 것입니다 : 내가 FOR 루프에서 코드를 가지고 WHERE id = 1WHERE id = $i을 대체 작동됩니다

for($i = 1; $i <= $RESULTS_count; $i++){ 

$rawResult = $wpdb->get_row(
       $wpdb->prepare("SELECT * FROM ".WPSQT_TABLE_RESULTS." WHERE id = $i"),ARRAY_A); 

$rawResult['sections'] = unserialize($rawResult['sections']); 

    foreach($rawResult['sections'] as $result_sections){ 
     if($result_sections['answers'][1]['mark'] == 'correct') $correct_answer++; 
    } 
} 
echo $correct_answer/$RESULTS_count; 

... 수 있었 문제 FOREACH FOR 루프에있는 것을 좋아하지 않아?

내가 어떻게해야한다고 생각합니까?

EDIT : 내가 얻는 경고는 ID 2로 결과를 삭제했기 때문에 발생했다고 생각합니다. 따라서 테이블 행 위의 루프가 비어 있고 경고 메시지가 표시됩니다.

+11

왜 경고를 제거하려면 코드를 수정하지? – Gntem

+0

나는 데이터가 있기 때문에 내가 할 수 있다고 생각하지 않는다 ... – Radi

+0

var_dump ($ rawResult [ 'sections']); * * 데이터를 직렬화 해제 한 후에? – Gntem

답변

3

데이터가 먼저 배열인지 확인하거나 배열로 유형을 변환해야합니다.

은 배열 :

if (is_array($rawResult['sections'])) { 
     foreach ($rawResult['sections'] as $result_sections) { 
      if ($result_sections['answers'][1]['mark'] == 'correct') 
       $correct_answer++; 
     } 
    } 

캐스트 :

foreach ((array) $rawResult['sections'] as $result_sections) { 
     if ($result_sections['answers'][1]['mark'] == 'correct') 
      $correct_answer++; 
    } 
+0

유형 변환이 작동합니다! 고마워요! – Radi