foreachの使い方がよくわからないので教えてください - PHPプロ!Q&A掲示板

101

  • 100P

foreachの使い方がよくわからないので教えてください

質問日時 / 2006年7月24日 17:23    回答数 / 6件

Questioner:  baggio  このエントリーをはてなブックマークに追加 

キーワード / 配列    foreach   

今独学でPHPを勉強してるんですけどforeachの使い方がよくわかりません。
foreachはどんな時に使えるのか教えてください(for文とは違うんですよね?)。
特に$key(一時変数?)と書いてありますけど配列のキーが入ってそれをどういう風に使えるのかがよくわかりません。あまりに抽象的な質問ですみませんが教えてください。

この質問への意見の募集は締め切られ、ポイントは既に配分されました。
意見を投稿することはできますが、ポイントを受け取ることはできません。



ツリー一覧

┣A01hummer配列全部に対して処理を行う時に一番良く使うのがfore
┃┗A01-1baggioお早い返信ありがとうございます>^_^< 指定されたペ
┣A02maru_x_xこんばんは。 たとえばこんな使い方とかforeachの$
┃┗A02-1baggio大変わかりやすい返信ありがとうございます。PEARとい
┗A03smilestyle55>foreachはどんな時に使えるのか教えてください(for文
 ┗A03-1baggio返信ありがとうございます。 DBのデーターを配列の形

回答一覧

並び替え:

A01
answererhummer [7月24日 17:35]

配列全部に対して処理を行う時に一番良く使うのがforeach。

$aa[0]='(゚Д゚ )';
$aa[1]='( ・∀・)';
という配列があったとき

foreach ($aa as $value){
 echo $value."ゴルァ";
}
とやると、$aa[0],$aa[1]の2回分ブロック内が処理される。そのとき$aaの中身が$valueに入って処理される。

この場合結果は

(゚Д゚ )ゴルァ
( ・∀・)ゴルァ

配列のキー([]の中身ね)がほしいときは

foreach ($aa as $key=>$value){
 echo $key.":".$value."ゴルァ";
}
この場合結果は

0:(゚Д゚ )ゴルァ
1:( ・∀・)ゴルァ

となる。

配列の中身はハッシュでもいいので

$aa['kita']='(゚Д゚ )';
$aa['kore']='( ・∀・)';
だたら

kita:(゚Д゚ )ゴルァ
kore:( ・∀・)ゴルァ

になる。

というかマニュアルを読むべし↓
http://jp2.php.net/manual/ja/print/control-structures.foreach.php

この意見に回答する

ツリーへ TOPへ

A01-1
replyerbaggio [7月24日 17:59]

お早い返信ありがとうございます>^_^<
指定されたページは見ましたけど正直うよくわかりませんでした。でもhummerさんの説明でforeachに対する使い方($key)がかなり詳しく説明されてあったのでよくわかりました。
実務はまだ未経験なんですけど自分で勉強しているかぎりそんなに配列を使う機会がないように思えますけど実際はどんな時に配列を作成しforeachを使用するのか教えてください。

この意見に回答する

ツリーへ TOPへ

A02 満足
answerermaru_x_x [7月25日 01:44]

こんばんは。

たとえばこんな使い方とかforeachの$keyに意義があるかと。

<?php
$a = array();
$a['key1'] = 'abCde';
$a['key2'] = 'FgHij';
var_dump($a);
// 配列の中身を全部大文字に
foreach ($a as $key=>$val) {
  $a[$key] = strtoupper($val);
}
var_dump($a);
?>

relust:
array(2) {
 ["key1"]=>
 string(5) "abCde"
 ["key2"]=>
 string(5) "FgHij"
}
array(2) {
 ["key1"]=>
 string(5) "ABCDE"
 ["key2"]=>
 string(5) "FGHIJ"
}

※インデント見やすくするために全角スペース使ってます

foreachよく使う場面としては、
データベースからの結果をPEARのDBとかで配列で受け取り
それの値を処理するときですかね。上記みたいなのとか。HTMLに吐き出すときとか。

あとは、ちょっと違う条件で同じ処理を繰り返す場合に、
配列で違う箇所だけ宣言しておいてforeachでまわしながら処理とか。

この意見に回答する

ツリーへ TOPへ

A02-1
replyerbaggio [7月25日 21:14]

大変わかりやすい返信ありがとうございます。PEARというライブラリがありそれを使ってDBのデーターを配列なりオブジェクトで持ってきてそれを加工するときにforeachを使うということがよくわかりました。foreachにおける$keyの使い方もよくわかりました。本当にありがとうございます。

この意見に回答する

ツリーへ TOPへ

A03 満足
answerersmilestyle55 [7月25日 11:26]

>foreachはどんな時に使えるのか教えてください(for文とは違うんですよね?)。
foreachは「配列のデータをまとめて処理したいとき」に使います。


for文もforeach文も、「ある処理を繰り返す」という機能を提供している点は共通していますが、以下の点が異なります。


● for文 = 「aという条件を満たす間、bという処理を繰り返す」という構文を組み立てるときに使います。
繰り返し処理を施す対象は、配列に限定されていません。
PHPで扱える対象なら何でもOKです。

例) for ( a ) { b };


● foreach文 = 配列のデータを対象にして、繰り返し処理を施すこときに使います。
配列専用の繰り返し処理機能ですね。

例1)普通の配列
$data = array("あ", "か", "さ", "た", "な");
foreach ($data as $value) { //配列$dataから1行分ずつデータを$valueとして取り出す
    echo $value; //配列のデータ$valueに対して処理を実行(この例では表示で使用)
}


出力結果: あかさたな

例2)連想配列
$data = array("a" => "あ", "ka" => "か", "sa" => "さ", "ta" => "た", "na" => "な");
foreach ($data as $key => $value) { //配列$dataから1行分ずつデータを$keyと$valueの対で取り出す
    echo $key . $value; //配列のデータ$keyと$valueに対して処理を実行(この例では表示に使用)
}


出力結果: aあkaかsaさtaたnaな


端的には、foreachの使い方はこれだけです。


>配列を使う機会がないように思えます

プログラミングの勉強をしている初期の頃、上達するコツとして、配列の使い方=データの出し入れ=習得しておくとイイヨというアドバイスがありました。

データの塊を扱うときに配列をうまく使えると、非常にスッキリしたコードになり「やっぱ配列は便利だわ~☆」と思えるようになると思います。

・データベースでデータの出し入れをするとき
・プルダウンメニューのリストをプログラムで組み立てるとき
とか、配列が重宝する局面はいろいろありそうですね。

この意見に回答する

ツリーへ TOPへ

A03-1
replyerbaggio [7月25日 21:23]

返信ありがとうございます。
DBのデーターを配列の形で取ってきてそれを加工したりするときに使う事がわかり大変ありがたいアドバイスをもらったと思っております。これからPEARDBを入れて色々探ってみようと思います。

この意見に回答する

ツリーへ TOPへ

<<質問一覧へ



Pick Up Q&A

Q
PHPのHTML埋め込み記述について
 このエントリーをはてなブックマークに追加 
A
$_POST["data"] == "男" ? $val = "checked" : $val = "" ; の意味は以下と同じです。 if($_POST["data"] == "男"){ $val = "checked; } e...

>>続きを読む

kende様のご指摘通り、三項演算子を使用する際には、コードの複雑度などを考慮する必要がありますね。書きやすさと共に可読性も追求したいところですね。

▲解説者:岡本(アシアル株式会社 教育コーディネーター兼 システムエンジニア)