1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

PHP foreachを使う

Last updated at Posted at 2020-05-01

#foreachを使う
###foreachとは
配列の値を複数表示させる時に使います。

$members = [
  'name' => '鈴木',
  'height' => 172,
  'hobby' => '野球'
];
foreach($members as $member){
  echo $member;
}

説明すると、$membersという連想配列があったとして、foreach($members as $member)とありますが、これは$members$memberという変数で展開するという事です。従って、変数$member$value等配列に関係性のあるものの名前にすると分かりやすいです。
image.png
ブラウザで見るとこのように表示されます。$membersのバリューが表示されているのが分かります。
では、バリューだけでなくキーの値も取得したい場合はどうかけば良いでしょうか。

$members = [
  'name' => '鈴木',
  'height' => 172,
  'hobby' => '野球'
];
//キーとバリューそれぞれ表示
foreach($members as $member => $value){
  echo $member . 'は' . $value;
}

このように書きます。$member=> $valueと追加されているのがわかると思います。
ではこれをブラウザで見るとどうでしょうか。
image.png
このようにキーとバリュー両方の値が取得出来ているのが分かります。

$members_1 = [
  '鈴木' => [
    'height' => 172,
    'hobby' => '野球'
  ],
  '田中' => [
    'height' => 168,
    'hobby' => '野球'
  ]
];
}

ではこのような場合はどうでしょう。

foreach($members_1 as $member){
  echo $member;
}

先ほど同様このようにかけば表示出来そうです。ではブラウザを見てみましょう。
image.png
しかし期待したようには表示出来ませんでした。これは、$members_1という配列の中に'鈴木''田中'という配列があり、この配列も展開してあげなければいけないためです。そのため、foreachの中にforeachを書いて展開してあげる必要があります。

//多段階の配列を展開
foreach($members_1 as $member_1){
  foreach($member_1 as $member){
    echo $member;
  }
}

このように、多段階の配列を展開する場合はこのようにforeachのなかにforeachで展開してあげるといいと思います。ブラウザはこのようになりました。
image.png
このように'鈴木''田中'の配列の値が取得出来ました。
キーとバリューを取得したい場合でも先ほどと同様に=> $valueなどをつけてあげると両方取得する事ができます。
今回はforeachについて自分なりに書いてみました。最後まで見ていただいてありがとうございます!!
ご意見、ご指摘等ありましたらどんどんお願いします!

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?