質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
foreach

foreachは、List・Collection・Arrayといったデータ構造の各要素に対して繰り返し処理を実行するために扱われる、制御構造の構文です。

Q&A

解決済

1回答

1727閲覧

foreach文の引数について

gonpapa

総合スコア6

foreach

foreachは、List・Collection・Arrayといったデータ構造の各要素に対して繰り返し処理を実行するために扱われる、制御構造の構文です。

0グッド

0クリップ

投稿2020/02/22 21:41

Progateのforeach文の記述がわかりません。
配列$typesは定義されていますが、typeの定義が見当たりません。
引数であれば違う変数名value等でもよいかとおもうのですが、
エラー表記になります。
分かる方いらっしゃいましたら、よろしくお願いします。

<?php $types = array('Progateに関するお問い合わせ', 'Progateに対する意見', '採用に関するお問い合わせ', '取材・メディア関連のお問い合わせ', '料金に関するお問い合わせ', 'その他'); ?> <!-- この下にselectタグを書いていきましょう --> <select name="category">  <option value="未選択">選択してください</option> <?php foreach ($types as $type) { echo "<option value='{$type}'>{$type}</option>"; } ?> </select>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

PHP の foreach は、foreach (既存の配列 as 配列の各要素を受け取るための変数) となります。
$type は事前に定義する必要はなく、foreach の中で $types の各要素が順番に代入されてループします。

php

1 foreach ($types as $type) { 2 echo "<option value='{$type}'>{$type}</option>"; 3 }

これは次の for 文と同じ動作になります。

php

1 for ($i = 0; $i < count($types); $i++) { 2 $type = $types[$i]; 3 echo "<option value='{$type}'>{$type}</option>"; 4 }

なお、PHP の質問なので PHP のタグをつけることをお勧めします。

投稿2020/02/22 22:14

hoshi-takanori

総合スコア7901

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

gonpapa

2020/02/23 05:55

回答ありがとうございます。 定義する必要がないということは、$typeではなく$valueであったり他の変数名でもよろしいでしょうか。 まだ勉強はじめたばかりでProgateの環境しかなく、変数名を変えて試していたらProgate上ではエラーとなってしまいました。
hoshi-takanori

2020/02/23 05:58

もちろん他の変数名でも大丈夫です。ただし、foreach の変数名を変えたら、それを使っているところ(echo の中)も併せて変える必要があります。
gonpapa

2020/02/23 21:16

貴重なお時間を裂いていただき、回答ありがとうございました。大変助かりました。
退会済みユーザー

退会済みユーザー

2020/02/23 21:50

言いたいことはわかるけど、for の方は、一部の配列のみが似た動作をするだけで、同じ動作ではないかと。根本的な動作が違うので、同じと言ってしまうと間違いだです。
hoshi-takanori

2020/02/23 22:13

おっしゃる通りです。正確には、「質問文のコードの foreach を以下の for を含むコードで書き換えても同じ結果が得られる」と言うべきでしようね。 for と foreach の違いについては、for でループカウンターとして使ってる変数 $i はループ中で書き換えることができて、ループの挙動を変えることもできたりします。 また、PHP の配列はインデックスに整数だけでなく文字列も使えます(いわゆる連想配列)し、整数でも途中を飛ばすことができたりして、その場合の foreach の挙動は for とは異なります。 そういった細かい点はこれから学んでいただくとして、まずは普通の配列 array("a", "b", "c") に対して foreach を使うとどうなるかを理解することが大切だと思ってこのような回答としました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問