• ベストアンサー

Warning: Invalid argument supplied

Warning: Invalid argument supplied for foreach() inを消したい テストサーバーでは、問題ないのですが、本サーバーで上記のエラーが foreachの部分で出てしまいます。 エラーが出るだけで他の部分の表示には問題なのですが、 おそらくどこまでのエラーを表示するかの設定がサーバーによって 違うからだと思うのですが、 phpコード側で上記のエラーを表示するかしないかを変更することは できませんでしょうか? よろしくお願いいたします。

  • PHP
  • 回答数2
  • ありがとう数6

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

foreach() に指定する変数が宣言されていない場合などにでますね。 変数の前に明示的に(array)と書くとエラーがでなくなりますよ foreach($xxx as $yyy){} ↓ foreach((array) $xxx as $yyy){} ちなみに環境によってでる場合と出ない場合があるのは、 どのレベルまでエラーをだすかというポリシーの違いによるものです それを吸収するにはerror_reporting()などでレベルをあわせることになります。 http://www.php.net/manual/ja/function.error-reporting.php

trfnc223
質問者

お礼

ありがとうございます! コードは先方支給でかえれなかったのでエラー出力レベルをかえるようにします!

その他の回答 (1)

  • askaaska
  • ベストアンサー率35% (1455/4149)
回答No.2

Warning: Invalid argument supplied for foreach が出るのは、そういう実装をしているせいよ。 テストサーバーで警告が出ない理由は分からないけど、 例えばphpのバージョンが違うとか 設定が違うとかあるのね。 どちらにせよ、この警告が出るのは 間違いなくコードに問題があるからよ。 例えばforeachで扱っている配列が 特定の条件のときに配列にならない とかね。

trfnc223
質問者

お礼

ありがとうございます!

関連するQ&A

  • エラーの原因について

    エラーの原因について 以下のエラーが表示されますがPHP自体は動作するようです。 PHPプログラムの画面の下に表示されます。 Warning: Invalid argument supplied for foreach() in /home/アカウント/public_html/clz/acc.php on line 1535 Warning: Invalid argument supplied for foreach() in /home/アカウント/public_html/clz/acc.php on line 1557 回避策をご存知の方は、ご指導よろしくお願い致します。

    • ベストアンサー
    • PHP
  • Easybotterのエラーについて教えてください

    Easybotterを使用してbotを作っているのですが、更新も何もしていないのに今日の午前中から急にリプライができなくなってしまいました。(今まではできていました) botは3体いるのですが、2つは正常に稼動していて、一つだけがエラーになります bot.phpを叩くと Warning: Invalid argument supplied for foreach() in /home/users/0/xxxxxxxx/web/xxxxx/EasyBotter.php on line 414 3分以内に受け取った未返答のリプライはないようです。 Warning: Invalid argument supplied for foreach() in /home/users/0/xxxxxxxx/web/xxxxx/EasyBotter.php on line 414 3分以内のタイムラインに未反応のキーワードはないみたいです。 こういうエラーが出ます reply_pattern.php、もしくはEasybotter.phpの記述が悪いのかと思って両方デフォルトのものに差し替えてみましたが変化ありません。Easybotterのバージョンは最新にしてあります。 原因がわかる方是非ご教授ください。

    • ベストアンサー
    • PHP
  • mMeasureのエラーについて

    MySQLモニタリングツールの「mMeasure」から送付されるアラートメールが送信されません。 「mmeasure.err」のログを見ると以下のエラーがでています。 Body & header send failure(Bad file descriptor)... at ../library/mailer.pl line 149. また、WEB画面に関しても以下の現象が起きています。 ・「スロークエリー」の箇所に以下のエラーが表示される。 Warning: Invalid argument supplied for foreach() in /usr/local/mmeasure/web/index.php on line 415 Warning: Invalid argument supplied for foreach() in /usr/local/mmeasure/web/index.php on line 459 ・データ操作クエリー比率がカウントされない。 動作環境は以下のとおりです。 debian3.1 MySQL5.0.22 perl5.8.4 Apache2.0.59 php5.1.6 qmail1.03 以上、何卒ご教授をよろしくお願いいたします。

  • 「the webmaster」は誰でしょうか?

    FC2にログインしホームページを見ようとしたら -------------------------------- 500 サーバ内部エラー Invalid argument supplied for foreach() ウェブサーバがリクエストを処理しているときに、内部エラーが発生しました。 the webmaster)に連絡を取って、この問題を報告して下さるようお願いします。 ありがとうございます。 2016-10-01 21:45:22 -------------------------------- となったのですが誰に連絡を取ればいいのでしょうか? 「the webmaster」は誰でしょうか?

  • [初歩?]FOREACHの構文エラーの原因がわからない

    下記を表示すると Warning: Invalid argument supplied for foreach() in とエラーになってしまい、どうしても原因がわからないのですが・・ よろしくお願い致します <html> <body> <form action="$PHP_SELF" method="post"> <input type="radio" name="q2[]" value="0"<?php foreach ($_POST['q2'] as $q2_sel) { if ( $q2_sel == '0') { echo " selected"; }} ?>>男 <input type="radio" name="q2[]" value="1"<?php foreach ($_POST['q2'] as $q2_sel) { if ( $q2_sel == '1') { echo " selected"; }} ?>>女 </form> </body> </html>

    • ベストアンサー
    • PHP
  • phpのエラー(Warning: explode() [functio

    phpのエラー(Warning: explode() [function.explode]: Empty delimiter in..)と(Warning: Invalid argument supplied for foreach() in) PHP4のサーバーにて問題なく作動しているプログラムなのですが、PHP5のサーバーにて設置したところ、以上のエラー表示がされ、解決策が見つからず質問いたしました。 エラーの出たサーバー情報 PHP Version 5.2.11 Server API Apache エラーの出たファイル1 --------------------- $fname = "als_admin/alslist.dat"; $fp = fopen($fname, "r"); $buf = fread($fp, filesize($fname)); $buf = explode( LB(), substr($buf, 0, strlen($buf)-strlen(LB()) ) );    ※ //tab毎に分割 foreach($buf as $key => $value) { //表示対象を抽出   ※ $buf[$key] = explode("\t", $value); } //詳細情報に代入 $write = ""; foreach($buf as $key => $value)     ※ { //idが一致するデータのみを取得 if( $value[0] != $_GET['id'] ){ continue; } //非表示中はアクセス不可(一覧には出ないが直リン対策) if( $value[13] < 0 ){ //リストNoがマイナスになっている exit("ページが存在しません。<a href=\"top.php\"> TOPへ</a>"); } //データをセット foreach($gkey as $fk => $fv){ $g[$fv] = $value[$fk] ? $value[$fk] : ""; } break; } エラーの出たファイル2 --------------------- <? include "../modules.php"; if(empty($_GET['r'])) : //リスト表示の場合 $fname = "galslist.dat"; $buf = file_get_contents($fname); if(!empty($buf)) { $buf = explode( LB(), substr( $buf, 0, strlen($buf) - strlen(LB()) ) ); ※ foreach($buf as $key => $value) {     ※ $buf[$key] = explode("\t", $value); if(isset($buf[$key][13]) && $buf[$key][13] > 0) $view[] = $buf[$key]; else $noview[] = $buf[$key]; } } endif; ?> エラー表示が出たところに※印をいれました。 文字数制限があり、お答えを頂く上で以上の記載で足らない部分がありましたらご指摘頂けますでしょうか。恐れ入りますがよろしくお願いします。

    • ベストアンサー
    • PHP
  • PHPエラーについて教えてください

    PHPエラーについて教えてください GD関数のエラーだと思います。 サーバを移動したら以下のようなエラーが出ました。 どのようなエラーになるのでしょうか。 Warning: imagesx(): supplied argument is not a valid Image resource in /home/sites/heteml/xxx/xxx.php on line 99 Warning: imagesy(): supplied argument is not a valid Image resource in /home/sites/heteml/xxx/xxx.php on line 99 Warning: imagecopyresized(): supplied argument is not a valid Image resource in /home/sites/heteml/xxx/xxx.php on line 99 Warning: imagejpeg(): supplied argument is not a valid Image resource in /home/sites/heteml/xxx/xxx.php on line 100

    • ベストアンサー
    • PHP
  • Wordpressの口コミ評価プラグインの件

    Wordpressで口コミ評価の設置を考えておりまして、「WP Customer Reviews」というプラグインを有効化してみたのですが、固定ページ・投稿ページ、それぞれ1つのページに対して、1つしか設置出来ない仕様のようです。 その他、いろいろと検索してプラグインを調べてみたのですが、どれも1ページに対して1つだけの表示になるようです。 「star-review-manager」というプラグインが複数設置出来るような事を見かけて、設置はしてみたのですが、設置ページに Warning: Invalid argument supplied for foreach() in ~ とエラー表記されてしまいます。評価投稿フォームは表示されます。 なにかいいプラグイン、または上記エラーを改善する方法はございますでしょうか? よろしくご教授お願いいたします。

    • 締切済み
    • PHP
  • メールフォームの設置

    メールフォームの設置をしたいのですが 送信を押すと以下のようなメッセージが出てしまいます。 考えられる原因を教えてください。 Warning: file(index.html) [function.file]: failed to open stream: No such file or directory in /home/users/1/main.jp-XXX/web/fmail.php on line 161 Warning: Invalid argument supplied for foreach() in /home/users/1/main.jp-XXX/web/fmail.php on line 162

    • 締切済み
    • PHP
  • PHPの吐くデバッグ行番号の見方を教えてください。

    PHP入門者です。 まだ自分でスクリプト開発はできませんが、 サンプルスクリプトを改造しながら自習中です。 デバッグエラー表示で、このような行番号が出てくれるのは とても助かるんですが、 PHP Error Message Warning: Invalid argument supplied for foreach() in /home/user/public_html/include.php on line 127 この場合127行目を探しても該当しそうな間違いが発見できなくて 悩んでいます。 どうも、少しずつ行番号表示が実際のスクリプトファイルとずれて いることに薄々気づき始めました。 実際のスクリプトにはコメントとか色々入ってますから、 多分コメントは引き算した行数なのかな?とは思ってるんですが。 それでも間違えた心当たりの無い行に行き着いたりします。 デバッグが指示してくれる行番号とは、具体的にどの行を指摘して くれていることになりますでしょうか? こんなレベルの私ですが、どうかお助けください。

    • ベストアンサー
    • PHP