0

私は私がから得ている警告を抑制するのに助けが必要ですforeach()

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

思い通りの結果が得られています。警告を削除するだけです...

これは私のコードです:

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;

コードをFORループから取り出して、それで置き換えるWHERE id = $iWHERE id = 1機能します...問題は、FOREACHがFORループに入るのが好きではないということでしょうか?

私は何をすべきだと思いますか?

編集:私が受け取った警告は、ID 2の結果を削除したことが原因だと思います。したがって、テーブルの行をループすると、そのうちの1つが空になり、警告が表示されます...

4

1 に答える 1

4

データが最初に配列であることを確認するか、データを配列に型キャストする必要があります。

配列です:

    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++;
    }
于 2012-07-13T16:07:09.550 に答える