23日目
cakephpは難しいですが理解してくると何がどう関わってくるのかという所を何となく掴めてきたような気がします。
今後書かなくてはいけなくてはいけないところは、
・Controller作成法
・ViewとTemplateの関係性
・Controller内でのフォームの作成
・フォームで受けた情報をif文を使って表示を変える
とかですね。
自分の復習の為にも書きますし、今日やった事などはそれを書かないとわからないことなので...
では、本日やったことの内容です。
今日は(連想)配数とforeach文です。
foreach文に関してはまだ詰めれてないところがありますのでそれも今後書いていきたいです。
まずは配列です。(連想配列もあるよ!)
配列というのは、自分が箱の中に何かモノを入れて自分が好きな時にそれを取り出す事が出来るというものです。
箱Aがあるとします。箱の中に一つしか物(データ)を入れられないのが変数です。
ですが、配列を使う事で複数ものをいれる事が可能になります。
配列を使った場合、箱AはタンスAに変わります。
タンスAには引き出しa,b,cがあります。引き出しa,b,cには物(データ)を入れることが出来て、好きな時に取り出せます。
さらにこの引き出しa,b,cには小物入れがありました。
引き出しaにはX1,X2
引き出しbにはY1,Y2
引き出しcにはZ1,Z2
という小物入れがそれぞれ付いています。
というように、配列の中に配列を、またその中に配列を...としていくことで膨大な量の情報でも定義できるようになります。
---------------------------------
| A |
| ↓ ------ ↓ ------- ↓ |
| a | b | c | こんな感じのイメージです。
-- ↓ -- ↓ -- ↓ --- ↓ --- ↓ --- ↓ -- わかりにくいとか言わないでください(笑)
| X1 | X2 | Y1 | Y2 | Z1 | Z2 |
| ------------------------------- |
こうする事で、物をタンスAの中にしまっておける、且つ好きなだけ取り出す事が出来ます。
$A=array(
0=>array(
'drink'=>array('name'=>'coke'),
'company'=>array('CompanyName'=>'Coka Cola')
),
1=>array(
'drink'=>array('name'=>'calpis'),
'company'=>array('CompanyName'=>'Calpis')
),
2=>array(
'drink'=>array('name'=>'Bireley`s'),
'company'=>array('CompanyName'=>'Asahi')
);
$Aというのは変数です。上記の例でいうとタンスAのことです。
0、1、2というのは引き出しa、b、cと同じです。
各種drink、companyというのは上記の小物入れX1、X2、Y1、Y2、Z1、Z2のことです。
緑色で指定している('name'= >'coke'),はnameはcokeである、という事を定義しています。
('CompanyName'= >'Calpis'),ならCompanyNameはCalpisを定義している、という事です。
” = > ”で定義をして、' name 'だったら' coke 'を、' CompanyName 'なら' Calpis 'という様に
配列を使って言葉を連想させるように定義する事を連想配列といいます。
次に array()の動きについてです。
array()は配列を使用する時に最も使われることの多い構文の一つです。
$変数= array()の内容を定義して行きます。
最初では$a=array ( ) で0 , 1 , 2 を定義して、その後にまた array を使う事で、
次は 0 , 1 , 2 配列をすることが出来る、という事です。
最後に今回この配列の一部をブラウザに表示させます。
" print_r ( ) " を利用する事で指定したデータを取り出すことが出来ます。
print_r($A[0]['company']['CompanyName']);
この文は上記例で最終的に " Coka Cola " を取り出します。
()内の動きを見ていきます。
( $A はデータを取り出したい配列の指定をしています。
[ 0 ] はその後の配列の中身を、またその後の [ 'company' ] で取り出すデータを絞って、[ 'CompanyName' ] ); で最後まで指定出来ました。
このデータの取り出し方はディレクトリからファイルを指定する時のパスの指定に似ていますね。(個人的な捉え方ですが...)
ちなみに ; (セミコロン)を忘れるとめちゃくちゃ怒られるので気を付けましょう。
続いてはforeach文についてです。
はい。先ほどは " print_r " を使うことで一つのデータを取り出しましたが、
今度は " foreach "という構文を使ってデータを取得します。
これは繰り返し文です。配列の例を使いつつ説明します。
foreach($A as $key1 => $b1){
foreach($b1 as $key2 => $b2){
foreach($b2 as $key3 => $b3){
echo $key3." ".$b3."</br>";
}
}
}
foreach ( 配列の変数 as $適当に変数 => $何かしら変数 ) { } ;
という形になります。
適当に変数と何かしら変数は任意で決めていいです。
foreachの例を見ていきます。
foreach($A as $key1 => $b1){ //foreach文1(仮)
foreach文は( )を繰り返し処理をする、ということを示しています。
次の行では foreach($b1 as $key2 => $b2){ //foreach文2(仮)
となりました。
これはforeach文1で定義した $b1 を使い、さらにその中にある $key2と$b2を
定義しています。
foreach($b2 as $key3 => $b3){ //foreach文3(仮)
foreach文2と同じく、$b2を使って$key3と$b3を定義しています。
それをechoを使って呼び出します。
echo $key3." ".$b3."</br>";
となります。
" " (ダブルクォーテーション)内にはスペースが二つ空けてあります。
(表示の都合上見やすかったので...)
name coke
company Coka Cola
name calpis
company Calpis
name Bireley's
company Asahi
結果としてはこのような表記になります。
表示順については自分はなんとなくわかったのですが、(教えてもらったのもあるし)
phpの原則として”上から順に処理をしていく”というのが常ですよね。
なので、配列の例でも[ 0 ]、[ 1 ]、[ 2 ]の順番で処理を行っている
といのが見てわかります。
今日はこのくらいでしょうか?
また追記すべき点があればどしどしします〜