PHPで作りたいものを作る 第二夜
前回は、HTMLのフォームの内容を、PHPに受け渡すところまでやった。
で、$_POST で受け取ると、配列でごそォ! っとやってくる。今回はそのごそォ! っとしたやつを食べやすく切り落としにしていくマシーンをつくります。
今日やりたいことは、配列の中身を順番にひとつずつ出力する。です。
さいしょ考えた目標は、『配列に内容を順番に一つずつファイル書き込みする』だったけど、同時にやるよりひとつひとつ問題を解決していってからのほうがわかりやすいだろうな、と思ったので、まずはひとつずつ出力するからやります。
そのまえに、「配列でごそォ!」っていうやつの実物(?)。
こんな感じでゴロッとしている。配列のかたまり。配列の中に配列が入っていたりもする。(そうしたのは自分なんだけど。)
これを切り落としにしていくのには、「foreach」という便利な機能がある。なんだっていうのは、PHPマニュアルから引いてきた。
foreach は、配列を反復処理するための便利な方法です。
https://www.php.net/manual/ja/control-structures.foreach.php
どうやって使うかというと、
foreach(配列 as $要素の値が代入される変数)
文
または
foreach(配列 as 要素のキーを入れる変数 => 要素の値が代入される変数)
文
というかんじで、カッコの中にそれぞれを記述してあげる。文ってとこは、自分がやりたい処理を書く。
要は、「これ、おねがいしまーす」ってforeachさんに配列を渡してお願いすると、値とかキーとかを抽出してくれる。めっちゃ便利。
今日の目標である「配列の中身を順番にひとつずつ出力する」は、結果的にこうした。
foreach($_POST as $name => $n_value){
if(is_array($n_value)){
$categoryName = $_POST[$name];
foreach($categoryName as $cn_key => $cn_value){
for($count = 0; $count < count($cn_value); $count++){
echo $cn_key."&".$cn_value[$count]."\n";
}
}
}else {
echo $name."と".$n_value."\n";
}
}
個人的に「これは、じゃがいもスライサーだな」と思った。塊を入れたら、スライスして出してくれる感じがしたので。
foreach のなかの$name だとか$n_valueというのは、変数なので自分で名付けていい。もちろん、リファレンスなどの名前をそのままつかっていいけれど、多分自分の中でしっくりくる命名をしたほうが、理解しやすかった。
もういちど、foreachの書き方を確認しながら、わかりやすくするため、この配列だの、要素の値だの、要素のキーだのを、HTML上の記述と突き合わせてみる。
次回は、嫌にならなかったらソースを一行ずつ確認していく。
ここから先は
¥ 100
サポートいただければもちろん嬉しいですが、読んでいただけたりリアクションいただけるととても嬉しいです。