0

PHP Warning: Invalid argument supplied for foreach() in /home/synergie/public_html/ss/libraries/joomla/database/database/mysql.php on line 377

断続的に表示されますが、多くの場合、私の joomla Web サイトの前面と背面の両方に表示されます。私はこの分野の専門家ではありませんが、助けを求めるすべての人にとって範囲外のようです。エラーの発生を止めることはできないため、エラーの報告を無効にするかブロックする方法を教えていただければ幸いです。

これは私が扱っているコードです:

  // If we want the whole field data object add that to the list.
            //else
            {
                foreach ($fields as $field)
                {
                    $result[$field->Field] = $field;
                }
            }

            return $result;
4

6 に答える 6

4

オブジェクトではなく、配列をループしていますか? 念のため、次のように変更することを検討してください。

foreach((array)$fields as $field)
{
    $result[$field->Field] = $field;
}
于 2012-04-21T20:54:41.960 に答える
2

エラーを隠す代わりに、 に何かTraversableを渡していることを確認する必要がありますforeach()@NullUserExceptionis_iterable()でそれを行うことができます:

function is_iterable($var) {
    return (is_array($var) || $var instanceof Traversable);
}

if(is_iterable($fields)) {
     foreach($fields as $field) {
         // Processing $field here
     }
} else {
    echo "Fields is not iterable";
}
于 2012-04-21T21:17:40.217 に答える
2

多分try catchブロック?

try {
    foreach( $array as $v ) {
        // do dtuff
    }
} catch( Exception $e ) {
    echo 'Caught exception';
}
于 2012-04-21T20:40:03.777 に答える
1

この関数でエラー報告をオフにすることができます:

error_reporting(0);
于 2012-04-21T20:41:06.150 に答える
1

これが本番環境で、このような警告メッセージを単に無効にしたい場合 (これは、Joomla について言及しているため、作成していないコードであると想定しています)、php.ini ファイルでエラー報告を無効にしてみてください。

変化する:

display_errors On

display_errors Off

これが開発環境の場合は、おそらくエラー報告をオンのままにして、警告を修正する必要があることに注意してください。

于 2012-04-21T20:44:07.100 に答える