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

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

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

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

4回答

22753閲覧

forとforeachの違い

growthposition

総合スコア98

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

1クリップ

投稿2016/10/07 00:33

基礎的な件で恐縮です。

forとforeachの違いが調べたのですが、
いまいち理解できておりません。

どなたかわかりやすくご教示頂けますと幸いです。

ご面倒をおかけ致しますが、
何卒宜しくお願い致します。

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

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

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

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

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

guest

回答4

0

foreach文は、基本的には配列の中身をループ処理したいときに使います。
for文は、ループの条件などが指定できるのでもう少し色々なケースで使えます。

以下の例では、foreachで$arr配列をループさせて、内容をechoしていますが、for文でも同じことができます。
しかし、3つ目の例のように、単に3回ループとかならfor文の方が向いています。

php

1<?php 2$arr = array('a', 'b', 'c'); 3foreach($arr as $value) { 4 echo $value . "\n"; 5} 6 7for($i=0; $i<count($arr); $i++) { 8 echo $arr[$i] . "\n"; 9} 10 11for($i=0; $i<3; $i++) { 12 echo $i . "\n"; 13} 14?>

※ただ、PHPでは配列をループさせる処理が多いので、foreachのほうがよく使いますね

投稿2016/10/07 00:43

popobot

総合スコア6586

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

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

growthposition

2016/10/07 00:52

ありがとうございます。 配列のループか数値のループですね。 ありがとうございます。
guest

0

ちゃんとマニュアルを読んでおくと良いです。

foreach
for

foreach は配列だけでなく、オブジェクトもループさせることができます。
これは PDO を使用するようになるとよく使われるので、覚えていないと理解に苦しみます。

for もちょっと特殊なことができます。

php

1<?php 2for($i = "a" ; $i !== "aaa" ; ++$i) { 3 echo $i . " "; 4}
a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq ar as at au av aw ax ay az ba bb bc bd be bf bg bh bi bj bk bl bm bn bo bp bq br bs bt bu bv bw bx by bz ca cb cc cd ce cf cg ch ci cj ck cl cm cn co cp cq cr cs ct cu cv cw cx cy cz da db dc dd de df dg dh di dj dk dl dm dn do dp dq dr ds dt du dv dw dx dy dz ea eb ec ed ee ef eg eh ei ej ek el em en eo ep eq er es et eu ev ew ex ey ez fa fb fc fd fe ff fg fh fi fj fk fl fm fn fo fp fq fr fs ft fu fv fw fx fy fz ga gb gc gd ge gf gg gh gi gj gk gl gm gn go gp gq gr gs gt gu gv gw gx gy gz ha hb hc hd he hf hg hh hi hj hk hl hm hn ho hp hq hr hs ht hu hv hw hx hy hz ia ib ic id ie if ig ih ii ij ik il im in io ip iq ir is it iu iv iw ix iy iz ja jb jc jd je jf jg jh ji jj jk jl jm jn jo jp jq jr js jt ju jv jw jx jy jz ka kb kc kd ke kf kg kh ki kj kk kl km kn ko kp kq kr ks kt ku kv kw kx ky kz la lb lc ld le lf lg lh li lj lk ll lm ln lo lp lq lr ls lt lu lv lw lx ly lz ma mb mc md me mf mg mh mi mj mk ml mm mn mo mp mq mr ms mt mu mv mw mx my mz na nb nc nd ne nf ng nh ni nj nk nl nm nn no np nq nr ns nt nu nv nw nx ny nz oa ob oc od oe of og oh oi oj ok ol om on oo op oq or os ot ou ov ow ox oy oz pa pb pc pd pe pf pg ph pi pj pk pl pm pn po pp pq pr ps pt pu pv pw px py pz qa qb qc qd qe qf qg qh qi qj qk ql qm qn qo qp qq qr qs qt qu qv qw qx qy qz ra rb rc rd re rf rg rh ri rj rk rl rm rn ro rp rq rr rs rt ru rv rw rx ry rz sa sb sc sd se sf sg sh si sj sk sl sm sn so sp sq sr ss st su sv sw sx sy sz ta tb tc td te tf tg th ti tj tk tl tm tn to tp tq tr ts tt tu tv tw tx ty tz ua ub uc ud ue uf ug uh ui uj uk ul um un uo up uq ur us ut uu uv uw ux uy uz va vb vc vd ve vf vg vh vi vj vk vl vm vn vo vp vq vr vs vt vu vv vw vx vy vz wa wb wc wd we wf wg wh wi wj wk wl wm wn wo wp wq wr ws wt wu wv ww wx wy wz xa xb xc xd xe xf xg xh xi xj xk xl xm xn xo xp xq xr xs xt xu xv xw xx xy xz ya yb yc yd ye yf yg yh yi yj yk yl ym yn yo yp yq yr ys yt yu yv yw yx yy yz za zb zc zd ze zf zg zh zi zj zk zl zm zn zo zp zq zr zs zt zu zv zw zx zy zz

まぁ、for の仕様というより、php のインクリメントの仕様のせいですけどw

投稿2020/08/21 16:25

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

0

ベストアンサー

forはループをするのに数値を利用します。
foreachはループをするのに配列を利用します。

PHP

1$array = ['A', 'B', 'C']; 2foreach ($array as $value) { 3 echo $value; 4} 5 6for ($i=0; $i < count($array); $i++) { 7 echo $array[$i]; 8}

上の2つは処理内容は同じです。foreachのほうが見やすいですよね。
配列のループを行いたいならforを使う必要性はありません。

ただ、2つの配列を同時に回したいとか、そういう場合はforeachでは無理ですので
forを使う必要があります。

// 入れ子についての補足

PHP

1$arrays = [ 2 ['A', 'B', 'C'], 3 ['D', 'E', 'F'] 4];

このような入れ子構造の配列でもforeachで

PHP

1foreach ($arrays as $array) { 2 foreach ($array as $value) { 3 echo $value; 4 } 5}

のように書くことが出来ます。
変数名がややこしくなりがちなので、例のような変数名は使わないようにしてくださいね。

投稿2016/10/07 00:46

編集2016/10/07 02:33
Yasha_Wedyue

総合スコア830

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

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

growthposition

2016/10/07 00:51

ありがとうございます。 入れ子構造はforeachでは無理なんですね 初めてしりました!
otn

2016/10/07 00:53

入れ子は可能ですよ。並行が無理。
guest

0

keyに文字列を使う配列(連想配列)をループするなら foreach
keyに数値を使う配列をループするなら for
と認識しております。

好みによりますが、私の場合 foreach の方をよく使いますね。

投稿2016/10/15 06:06

watarukashii

総合スコア10

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問