teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

4

追記

2017/07/16 09:27

投稿

nnahito
nnahito

スコア2006

answer CHANGED
@@ -133,4 +133,28 @@
133
133
 
134
134
  となります。
135
135
 
136
- `$array`配列の持つ、キー("ID", "title")に対する値(7, "多次元配列の扱い")をそれぞれ対応させて持ってきてくれるわけですね。
136
+ `$array`配列の持つ、キー("ID", "title")に対する値(7, "多次元配列の扱い")をそれぞれ対応させて持ってきてくれるわけですね。
137
+
138
+
139
+ > そうだとした場合、
140
+ > 「$first_key => $first_val」は$arrayの中に入ってるキーが0番目の値が
141
+ > array('ID'=>7, 'title'=>'多次元配列の扱い')の配列、
142
+ > ということでしょうか...?
143
+
144
+ その通りです!
145
+
146
+
147
+ > 一回目のforeachで$first_valがarray('ID'=>7, 'title'=>'多次元配列の扱い')になるとします。
148
+ > ということは、foreachの中にforeachがあるということなので、
149
+ > 「$second_key => $second_val」はキーがidの7を出力し、次にキーが'title'の'多次元配列の扱い
150
+ > を出力し、
151
+ > そして一回目のforeachに戻り次は$arrayのキーが1、値がarray('ID'=>6, 'title'=>'画像圧縮と軽量化のすすめ')を実行し、
152
+ > 2回目のforeachを実行し~というのを繰り替えしていく形になりますでしょうか...?
153
+
154
+ 完璧ですね。
155
+ その通りです!
156
+
157
+ 蛇足ですが、キーが不要な場合は、
158
+ `foreach ($array as $value) `
159
+ のようにかけたりもします。
160
+

3

追記2を追加

2017/07/16 09:27

投稿

nnahito
nnahito

スコア2006

answer CHANGED
@@ -82,4 +82,55 @@
82
82
  </html>
83
83
 
84
84
 
85
- ```
85
+ ```
86
+
87
+
88
+
89
+
90
+
91
+ # 追記2
92
+ > 一回目のforeach文,
93
+ > foreach ($array as $first_key => $first_val)このキーの部分は例えばなんですが、
94
+ > $first_key[0]としなくても、自動で$arrayの0番目の配列が選択されるということでしょうか?
95
+
96
+ 大凡そのとおりです!
97
+
98
+ foreachは、配列の中身を`キー`と`値`に分解してくれる、と私は書きました。
99
+ その意味を深掘りしていきます。
100
+
101
+ 例えば、ただひとつの配列、
102
+ `$array = array('ID'=>7, 'title'=>'多次元配列の扱い');`
103
+ があったとします。
104
+
105
+ この中身って、
106
+
107
+ ```
108
+ {
109
+ ["ID"]=> int(7)
110
+ ["title"]=> string(24) "多次元配列の扱い"
111
+ }
112
+ ```
113
+
114
+ ですよね?
115
+
116
+ では、こいつをforeachで回してやるとどうなるか?
117
+
118
+ 先に参考コードを提示します。
119
+
120
+ ```
121
+ <?php
122
+ $array = array('ID'=>7, 'title'=>'多次元配列の扱い');
123
+
124
+ foreach ($array as $key => $value) {
125
+ printf('キー:%s, 値:%s<br>', $key, $value);
126
+ }
127
+
128
+ ```
129
+
130
+
131
+ 1回目のループ → $key:"ID"、$value:7
132
+ 2回目のループ → $key:"title"、$value:"多次元配列の扱い"
133
+
134
+ となります。
135
+
136
+ `$array`配列の持つ、キー("ID", "title")に対する値(7, "多次元配列の扱い")をそれぞれ対応させて持ってきてくれるわけですね。

2

コードをちょっち修正

2017/07/16 09:23

投稿

nnahito
nnahito

スコア2006

answer CHANGED
@@ -71,9 +71,9 @@
71
71
  printf('今から展開するのは、key: %s, value: %s<br>', $first_key, $first_val);
72
72
 
73
73
  foreach ($first_val as $second_key => $second_val) {
74
- printf('key: %s, value: %s<br>', $second_key, $second_val);
74
+ printf('$first_valの中身は、key: %s, value: %s<br>', $second_key, $second_val);
75
75
  }
76
-
76
+
77
77
  echo '<hr>';
78
78
  }
79
79
 
@@ -81,4 +81,5 @@
81
81
  </body>
82
82
  </html>
83
83
 
84
+
84
85
  ```

1

追記コード追加

2017/07/16 07:56

投稿

nnahito
nnahito

スコア2006

answer CHANGED
@@ -45,4 +45,40 @@
45
45
 
46
46
  例えば今回の、`'ID'=>7, 'title'=>'多次元配列の扱い'`であれば、
47
47
  1回目のループでのキーは`ID`、値は`7`、
48
- 2回目のループでのキーは`title`、値は`多次元配列の扱い`となります。
48
+ 2回目のループでのキーは`title`、値は`多次元配列の扱い`となります。
49
+
50
+
51
+
52
+ # 追記
53
+ ```
54
+ <?php
55
+ $array[] = array('ID'=>7, 'title'=>'多次元配列の扱い');
56
+ $array[] = array('ID'=>6, 'title'=>'画像圧縮と軽量化のすすめ');
57
+ $array[] = array('ID'=>5, 'title'=>'初心者のためのgitコマンド');
58
+ ?>
59
+
60
+
61
+
62
+ <!DOCTYPE html>
63
+ <html lang="ja">
64
+ <head>
65
+ <meta charset="UTF-8">
66
+ <title></title>
67
+ </head>
68
+ <body>
69
+ <?php
70
+ foreach ($array as $first_key => $first_val) {
71
+ printf('今から展開するのは、key: %s, value: %s<br>', $first_key, $first_val);
72
+
73
+ foreach ($first_val as $second_key => $second_val) {
74
+ printf('key: %s, value: %s<br>', $second_key, $second_val);
75
+ }
76
+
77
+ echo '<hr>';
78
+ }
79
+
80
+ ?>
81
+ </body>
82
+ </html>
83
+
84
+ ```