Help us understand the problem. What is going on with this article?

Invalid argument supplied for foreach()

More than 1 year has passed since last update.

概要

PHPで出してしまったエラーで一度詰まったので、対応を書いておく。

どんな意味か

foreach文では本来、オブジェクトか配列を指定して繰り返し処理を行うが、
指定された変数がそのどちらでもない場合にこのエラーをはく。

問題の切り分け

getypes()を使って型が適正かを判定

これに尽きます。そもそも引数としている変数が正しいのならこのようなエラーは起こらない。
ただし、なぜ思ったものと違う型になってしまうのかは追調査する必要あり。

keyとvalueの両方を指定している場合はどちらも型を調査する。

追調査

型変換をしているところや型の相互変換がされてしまうところを中心に見ると良い。
その辺りの詳しいところについては公式ドキュメント(型の相互変換)へ。

参考

PHP公式ドキュメント foreach

SuguruOoki
現在は、TechBowlで主にフロントエンドを描いてる人。 以前は、バックエンドの開発と、データ分析をやっていた。
https://www.wantedly.com/users/17885157
techtrain
プロのエンジニアを目指すU30(30歳以下)の方に現役エンジニアにメンタリングもらえるコミュニティです。
https://techbowl.co.jp/techtrain/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした